Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

26 changed files with 310 additions and 427 deletions

View file

@ -1,13 +1,4 @@
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 1.0.75
Date: 09.12.2025
Changes:
- Add is_satellite to PlanetsLib:extend
- Remove default item weights as the code has been moved to PlanetsLib
Bug Fixes:
- Recycling in Factoriopedia: Add order to bioprocessing subgroup for compatibility (thanks jvella94)
- Crushing Industry: Use additional_categories for quality assembling so the rocket silo recipe will use concrete mix again
---------------------------------------------------------------------------------------------------
Version: 1.0.74 Version: 1.0.74
Date: 18.11.2025 Date: 18.11.2025
Bug Fixes: Bug Fixes:

View file

@ -1,6 +1,6 @@
{ {
"name": "lignumis", "name": "lignumis",
"version": "1.0.75", "version": "1.0.74",
"title": "Lignumis", "title": "Lignumis",
"description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.\n\nThis planet mod effects other planets and space ships. Make sure to read the description on the mod portal and check the mod settings.", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.\n\nThis planet mod effects other planets and space ships. Make sure to read the description on the mod portal and check the mod settings.",
"author": "cackling fiend", "author": "cackling fiend",
@ -12,40 +12,39 @@
"space-age >= 2.0.53", "space-age >= 2.0.53",
"astroponics >= 1.2.0", "astroponics >= 1.2.0",
"bioprocessing-tab", "bioprocessing-tab",
"cf-lib >= 1.1.0", "cf-lib >= 0.0.13",
"flib", "flib",
"gleba-water-cane", "gleba-water-cane",
"lignumis-assets >= 1.0.3", "lignumis-assets >= 1.0.3",
"mf-buildings >= 1.0.7", "mf-buildings >= 1.0.7",
"mf-core >= 1.0.3", "mf-core >= 1.0.3",
"mf-logistics >= 1.0.1", "mf-logistics >= 1.0.1",
"PlanetsLib >= 1.14.7", "PlanetsLib >= 1.1.26",
"pollution-as-surface-property", "pollution-as-surface-property",
"Wood-Walls >= 1.2.0", "Wood-Walls >= 1.2.0",
"vulcanus-sulfuric-bacteria", "vulcanus-sulfuric-bacteria",
"? aai-industry", "?aai-industry",
"? aai-loaders", "?aai-loaders",
"? aai-loaders-sane", "?aai-loaders-sane",
"? any-planet-start", "?any-planet-start",
"? crushing-industry", "?atan-nuclear-science",
"? fulgora-coralmium-agriculture", "?crushing-industry",
"? hot-metals >= 1.1.0", "?Diversitree",
"? lane-splitters", "?fulgora-coralmium-agriculture",
"? wood-industry", "?gleba-reborn",
"? wood-military >= 2.3.3", "?hot-metals >= 1.1.0",
"? canal-excavator >= 1.9.0", "?Krastorio2-spaced-out",
"? wood-logistics", "?lane-splitters",
"(?) atan-nuclear-science", "?metal-and-stars",
"(?) Diversitree", "(?)secretas",
"(?) gleba-reborn", "(?)Wood_Gasification_updated",
"(?) Krastorio2-spaced-out", "?wood-industry",
"(?) metal-and-stars", "?wood-military >= 2.3.3",
"(?) secretas", "!apm_power_ldinc",
"(?) Wood_Gasification_updated", "!early-agriculture",
"! apm_power_ldinc", "!planet-picker",
"! early-agriculture", "!wood-logistics",
"! planet-picker", "!wood-universe-modpack",
"! wood-universe-modpack", "!rso-mod"
"! rso-mod"
] ]
} }

View file

@ -46,7 +46,7 @@ AAILoaders.make_tier({
order = "d[loader]-a00[aai-wood-loader]" order = "d[loader]-a00[aai-wood-loader]"
}) })
data.raw.recipe["aai-wood-loader"].additional_categories = { "wood-processing" } data.raw.recipe["aai-wood-loader"].category = "wood-processing-or-assembling"
if not basic_circuit_board then if not basic_circuit_board then
local nauvis_recipe = Recipe:new("aai-wood-loader"):clone("wood-loader-electronic-circuit") local nauvis_recipe = Recipe:new("aai-wood-loader"):clone("wood-loader-electronic-circuit")

View file

@ -1,14 +0,0 @@
if not mods["canal-excavator"] then return end
data:extend({{
type = "mod-data",
name = "canex-lignumis-config",
data_type = "canex-surface-config",
data = {
surfaceName = "lignumis",
localisation = {"space-location-name.lignumis"},
mineResult = "stone",
oreStartingAmount = 10,
tint = {r = 102, g = 78, b = 6}
},
}})

View file

@ -90,9 +90,10 @@ end
local gold_recipe = Recipe:new("burner-crusher") local gold_recipe = Recipe:new("burner-crusher")
:replaceIngredient("iron-gear-wheel", "wooden-gear-wheel") :replaceIngredient("iron-gear-wheel", "wooden-gear-wheel")
:replaceIngredient("iron-plate", "gold-plate") :replaceIngredient("iron-plate", "gold-plate")
if settings.startup["lignumis-lumber-mill-more-recipes"].value then :assign({
gold_recipe.prototype.additional_categories = { "wood-processing" } category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or
end "crafting"
})
gold_recipe:clone("burner-crusher-copper") gold_recipe:clone("burner-crusher-copper")
:replaceIngredient("gold-plate", "copper-plate") :replaceIngredient("gold-plate", "copper-plate")

View file

@ -7,4 +7,3 @@ require("nuclear-science")
require("lane-splitters") require("lane-splitters")
require("wood-industry") require("wood-industry")
require("crushing-industry") require("crushing-industry")
require("canal-excavator")

View file

@ -23,7 +23,7 @@ lane_splitter.prototype.structure_patch.west.filename = data.raw.splitter["wood-
lane_splitter.prototype.structure_patch.north.filename = data.raw.splitter["wood-splitter"].structure_patch.north.filename lane_splitter.prototype.structure_patch.north.filename = data.raw.splitter["wood-splitter"].structure_patch.north.filename
lane_splitter.item.icon = Lignumis.graphics .. "icons/wood-lane-splitter.png" lane_splitter.item.icon = Lignumis.graphics .. "icons/wood-lane-splitter.png"
lane_splitter.item.order = "d[lane-splitter]-0[wood-lane-splitter]" lane_splitter.item.order = "d[lane-splitter]-0[wood-lane-splitter]"
lane_splitter.recipe.additional_categories = { "wood-processing" } lane_splitter.recipe.category = "wood-processing-or-assembling"
data:extend({ data:extend({
lane_splitter.prototype, lane_splitter.prototype,

View file

@ -19,8 +19,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "basic-circuit-board", name = "basic-circuit-board",
category = "crafting", category = "wood-processing-or-assembling",
additional_categories = { "wood-processing" },
icons = { icons = {
{ icon = Lignumis.graphics .. "icons/basic-circuit-board.png" }, { icon = Lignumis.graphics .. "icons/basic-circuit-board.png" },
{ icon = Lignumis.graphics .. "icons/gold-cable.png", scale = 0.25, shift = { 8, 8 } } { icon = Lignumis.graphics .. "icons/gold-cable.png", scale = 0.25, shift = { 8, 8 } }
@ -37,8 +36,7 @@ data:extend({
type = "recipe", type = "recipe",
name = "basic-circuit-board-copper", name = "basic-circuit-board-copper",
localised_name = { "item-name.basic-circuit-board" }, localised_name = { "item-name.basic-circuit-board" },
category = "crafting", category = "wood-processing-or-assembling",
additional_categories = { "wood-processing" },
icons = { icons = {
{ icon = Lignumis.graphics .. "icons/basic-circuit-board.png" }, { icon = Lignumis.graphics .. "icons/basic-circuit-board.png" },
{ icon = "__base__/graphics/icons/copper-cable.png", scale = 0.25, shift = { 8, 8 } } { icon = "__base__/graphics/icons/copper-cable.png", scale = 0.25, shift = { 8, 8 } }

View file

@ -58,7 +58,7 @@ local turret_recipe = {
results = { { type = "item", name = "basic-gun-turret", amount = 1 } } results = { { type = "item", name = "basic-gun-turret", amount = 1 } }
} }
if settings.startup["lignumis-lumber-mill-more-recipes"].value then if settings.startup["lignumis-lumber-mill-more-recipes"].value then
turret_recipe.additional_categories = { "wood-processing" } turret_recipe.category = "wood-processing-or-assembling"
end end
local turret_technology = { local turret_technology = {

View file

@ -84,8 +84,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "burner-agricultural-tower", name = "burner-agricultural-tower",
category = "crafting", category = "wood-processing-or-assembling",
additional_categories = { "wood-processing" },
energy_required = 10, energy_required = 10,
ingredients = { ingredients = {
{ type = "item", name = "stone-brick", amount = 5 }, { type = "item", name = "stone-brick", amount = 5 },
@ -117,8 +116,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "burner-agricultural-tower-copper", name = "burner-agricultural-tower-copper",
category = "crafting", category = "wood-processing-or-assembling",
additional_categories = { "wood-processing" },
localised_name = { "entity-name.burner-agricultural-tower" }, localised_name = { "entity-name.burner-agricultural-tower" },
icons = { icons = {
{ icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" }, { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" },

View file

@ -17,6 +17,7 @@ assembling_machine.crafting_categories = {
"crafting", "crafting",
"electronics", "electronics",
"pressing", "pressing",
"wood-processing-or-assembling",
"organic-or-assembling", "organic-or-assembling",
"electronics-or-assembling", "electronics-or-assembling",
"metallurgy-or-assembling" "metallurgy-or-assembling"
@ -49,6 +50,8 @@ remnants.animation[2].filename = gfx .. "burner-assembling-machine-remnants.png"
remnants.animation[3].filename = gfx .. "burner-assembling-machine-remnants.png" remnants.animation[3].filename = gfx .. "burner-assembling-machine-remnants.png"
remnants.order = "0[burner-assembling-machine]" remnants.order = "0[burner-assembling-machine]"
local crafting_category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting"
data:extend({ data:extend({
assembling_machine, assembling_machine,
remnants, remnants,
@ -67,8 +70,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "burner-assembling-machine", name = "burner-assembling-machine",
category = "crafting", category = crafting_category,
additional_categories = settings.startup["lignumis-lumber-mill-more-recipes"].value and { "wood-processing" } or nil,
enabled = false, enabled = false,
ingredients = { ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 5 }, { type = "item", name = "wooden-gear-wheel", amount = 5 },

View file

@ -44,6 +44,8 @@ remnants.animation[3].filename = gfx .. "burner-long-handed-inserter-remnants.pn
remnants.animation[4].filename = gfx .. "burner-long-handed-inserter-remnants.png" remnants.animation[4].filename = gfx .. "burner-long-handed-inserter-remnants.png"
remnants.order = "a-c-0" remnants.order = "a-c-0"
local crafting_category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting"
data:extend({ data:extend({
long_handed_inserter, long_handed_inserter,
remnants, remnants,
@ -63,8 +65,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "burner-long-handed-inserter", name = "burner-long-handed-inserter",
category = "crafting", category = crafting_category,
additional_categories = settings.startup["lignumis-lumber-mill-more-recipes"].value and { "wood-processing" } or nil,
enabled = false, enabled = false,
ingredients = { ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 1 }, { type = "item", name = "wooden-gear-wheel", amount = 1 },

View file

@ -1,4 +1,3 @@
local Recipe = require("__cf-lib__/data/Recipe")
local Technology = require("__cf-lib__/data/Technology") local Technology = require("__cf-lib__/data/Technology")
local LumberMillFactory = require(MF.buildings .. "LumberMill") local LumberMillFactory = require(MF.buildings .. "LumberMill")
local LumberMill = LumberMillFactory() local LumberMill = LumberMillFactory()
@ -8,143 +7,76 @@ local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].val
data:extend({ data:extend({
{ {
type = "recipe-category", type = "recipe-category",
name = "wood-processing" name = "wood-processing-or-assembling"
} }
}) })
table.insert(data.raw["character"]["character"].crafting_categories, "wood-processing-or-assembling")
local has_oxygen = data.raw["surface-property"]["oxygen"] ~= nil local has_oxygen = data.raw["surface-property"]["oxygen"] ~= nil
if not mods["wood-logistics"] then LumberMill.EntityBuilder:new()
LumberMill.EntityBuilder:new() :burnerEnergySource({ emissions_per_minute = { noise = 100 } })
:burnerEnergySource({ emissions_per_minute = { noise = 100 } }) :baseProductivity(0.5)
:baseProductivity(0.5) :apply({
:apply({ crafting_categories = { "wood-processing-or-assembling" },
crafting_categories = { "wood-processing" },
crafting_speed = 2, crafting_speed = 2,
energy_usage = "1000kW", energy_usage = "1000kW",
surface_conditions = { surface_conditions = {
{ {
property = has_oxygen and "oxygen" or "pressure", property = has_oxygen and "oxygen" or "pressure",
min = 3 min = 3
}, },
{ {
property = "gravity", property = "gravity",
min = 1 min = 1
} }
} }
}) })
local lumber_mill_item = LumberMill.ItemBuilder:new() local lumber_mill_item = LumberMill.ItemBuilder:new()
:apply({ :apply({
default_import_location = "lignumis", default_import_location = "lignumis",
order = "2[lumber-mill]" order = "2[lumber-mill]"
}) })
LumberMill.RecipeBuilder:new() LumberMill.RecipeBuilder:new()
:ingredients(table.trim({ :ingredients(table.trim({
{ type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 }, { type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "wooden-gear-wheel", amount = 50 }, { type = "item", name = "wooden-gear-wheel", amount = 50 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 20 or 40 }, { type = "item", name = "gold-plate", amount = basic_circuit_board and 20 or 40 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 20 } or nil, basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 20 } or nil,
{ type = "item", name = "burner-assembling-machine", amount = 2 } { type = "item", name = "burner-assembling-machine", amount = 2 }
})) }))
:apply({ :apply({
additional_categories = { "wood-processing" } category = "wood-processing-or-assembling"
}) })
LumberMill.TechnologyBuilder:new() LumberMill.TechnologyBuilder:new()
:prerequisites({ "steam-science-pack" }) :prerequisites({ "steam-science-pack" })
:count(250) :count(250)
:time(15) :time(15)
:ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }) :ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } })
:apply() :apply()
LumberMill.RecipeBuilder:new() LumberMill.RecipeBuilder:new()
:ingredients({ :ingredients({
{ type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 }, { type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "wooden-gear-wheel", amount = 50 }, { type = "item", name = "wooden-gear-wheel", amount = 50 },
{ type = "item", name = "copper-plate", amount = basic_circuit_board and 20 or 40 }, { type = "item", name = "copper-plate", amount = basic_circuit_board and 20 or 40 },
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 20 }, { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 20 },
{ type = "item", name = "assembling-machine-1", amount = 2 } { type = "item", name = "assembling-machine-1", amount = 2 }
}) })
:apply({ :apply({
name = "lumber-mill-copper", name = "lumber-mill-copper",
localised_name = { "entity-name.lumber-mill" }, localised_name = { "entity-name.lumber-mill" },
additional_categories = { "wood-processing" }, category = "wood-processing-or-assembling",
icons = { icons = {
{ icon = lumber_mill_item.icon }, { icon = lumber_mill_item.icon },
{ icon = basic_circuit_board and "__base__/graphics/icons/copper-plate.png" or "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } } { icon = basic_circuit_board and "__base__/graphics/icons/copper-plate.png" or "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
} }
}) })
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper") Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper")
else
table.assign(data.raw["assembling-machine"]["lumber-mill"], {
energy_source = {
type = "burner",
fuel_categories = { "chemical" },
effectivity = 1,
fuel_inventory_size = 3,
emissions_per_minute = { pollution = 10, noise = 100 },
},
crafting_categories = { "wood-processing" },
energy_usage = "1000kW",
module_slots = 4,
max_health = 500,
surface_conditions = {
{
property = has_oxygen and "oxygen" or "pressure",
min = 3
},
{
property = "gravity",
min = 1
}
}
})
data.raw.item["lumber-mill"].default_import_location = "lignumis"
table.assign(data.raw.recipe["lumber-mill"], {
additional_categories = { "wood-processing" },
ingredients = table.trim({
{ type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "wooden-gear-wheel", amount = 50 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 20 or 40 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 20 } or nil,
{ type = "item", name = "burner-assembling-machine", amount = 2 }
})
})
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 }
}
}
})
Recipe:new("lumber-mill")
:clone("lumber-mill-copper")
:assign({
localised_name = { "entity-name.lumber-mill" },
icons = {
{ icon = data.raw.item["lumber-mill"].icon },
{ icon = basic_circuit_board and "__base__/graphics/icons/copper-plate.png" or "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
}
})
:replaceIngredient("gold-plate", "copper-plate")
:apply()
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper")
end
Recipe:new("wooden-chest"):addCategory("wood-processing")
Recipe:new("small-electric-pole"):addCategory("wood-processing")

View file

@ -1,39 +1,33 @@
local item_sounds = require("__base__.prototypes.item_sounds") local item_sounds = require("__base__.prototypes.item_sounds")
local Recipe = require("__cf-lib__/data/Recipe")
if not mods["wood-logistics"] then data:extend({
data:extend({ {
{ type = "item",
type = "item", name = "lumber",
name = "lumber", icon = Lignumis.graphics .. "icons/lumber.png",
icon = Lignumis.graphics .. "icons/lumber.png", pictures = {
pictures = { { filename = Lignumis.graphics .. "icons/lumber.png", size = 64, scale = 0.5 },
{ filename = Lignumis.graphics .. "icons/lumber.png", size = 64, scale = 0.5 }, { filename = Lignumis.graphics .. "icons/lumber-1.png", size = 64, scale = 0.5 },
{ filename = Lignumis.graphics .. "icons/lumber-1.png", size = 64, scale = 0.5 }, { filename = Lignumis.graphics .. "icons/lumber-2.png", size = 64, scale = 0.5 },
{ filename = Lignumis.graphics .. "icons/lumber-2.png", size = 64, scale = 0.5 },
},
subgroup = "intermediate-product",
order = "A[basic-intermediates]-c[lumber]",
inventory_move_sound = item_sounds.wood_inventory_move,
pick_sound = item_sounds.wood_inventory_pickup,
drop_sound = item_sounds.wood_inventory_move,
stack_size = 100,
random_tint_color = { 1.0, 0.95, 0.9, 1.0 },
fuel_category = "wood",
fuel_value = "4MJ"
}, },
{ subgroup = "intermediate-product",
type = "recipe", order = "A[basic-intermediates]-c[lumber]",
name = "lumber", inventory_move_sound = item_sounds.wood_inventory_move,
category = "crafting", pick_sound = item_sounds.wood_inventory_pickup,
additional_categories = { "wood-processing" }, drop_sound = item_sounds.wood_inventory_move,
allow_productivity = true, stack_size = 100,
allow_as_intermediate = true, random_tint_color = { 1.0, 0.95, 0.9, 1.0 },
ingredients = { { type = "item", name = "wood", amount = 2 } }, fuel_category = "wood",
results = { { type = "item", name = "lumber", amount = 1 } }, fuel_value = "4MJ"
energy_required = 1 },
} {
}) type = "recipe",
else name = "lumber",
Recipe:new("lumber"):addCategory("wood-processing") category = "wood-processing-or-assembling",
end allow_productivity = true,
allow_as_intermediate = true,
ingredients = { { type = "item", name = "wood", amount = 2 } },
results = { { type = "item", name = "lumber", amount = 1 } },
energy_required = 1
}
})

View file

@ -100,17 +100,17 @@ emit("lab", "biolab", 20)
emit("locomotive", "locomotive", 200) emit("locomotive", "locomotive", 200)
emit_constant("locomotive", "locomotive", 10) emit_constant("locomotive", "locomotive", 10)
emit_constant("transport-belt", "wood-transport-belt", 2) --emit_constant("transport-belt", "wood-transport-belt", 2)
emit_constant("transport-belt", "transport-belt", 3) emit_constant("transport-belt", "transport-belt", 3)
emit_constant("transport-belt", "fast-transport-belt", 4) emit_constant("transport-belt", "fast-transport-belt", 4)
emit_constant("transport-belt", "express-transport-belt", 6) emit_constant("transport-belt", "express-transport-belt", 6)
emit_constant("transport-belt", "turbo-transport-belt", 8) emit_constant("transport-belt", "turbo-transport-belt", 8)
emit_constant("underground-belt", "wood-underground-belt", 7.5) --emit_constant("underground-belt", "wood-underground-belt", 7.5)
emit_constant("underground-belt", "underground-belt", 10) emit_constant("underground-belt", "underground-belt", 10)
emit_constant("underground-belt", "fast-underground-belt", 20) emit_constant("underground-belt", "fast-underground-belt", 20)
emit_constant("underground-belt", "express-underground-belt", 30) emit_constant("underground-belt", "express-underground-belt", 30)
emit_constant("underground-belt", "turbo-underground-belt", 40) emit_constant("underground-belt", "turbo-underground-belt", 40)
emit_constant("splitter", "wood-splitter", 20) --emit_constant("splitter", "wood-splitter", 20)
emit_constant("splitter", "splitter", 30) emit_constant("splitter", "splitter", 30)
emit_constant("splitter", "fast-splitter", 40) emit_constant("splitter", "fast-splitter", 40)
emit_constant("splitter", "express-splitter", 50) emit_constant("splitter", "express-splitter", 50)

View file

@ -77,8 +77,7 @@ QualityAssembler.EntityBuilder:new()
crafting_speed = 4, crafting_speed = 4,
module_slots = 6, module_slots = 6,
allowed_effects = { "consumption", "pollution", "quality" }, allowed_effects = { "consumption", "pollution", "quality" },
effect_receiver = { base_effect = { quality = 3.5 } }, effect_receiver = { base_effect = { quality = 3.5 } }
crafting_categories = { "quality-assembling" }
}) })
QualityAssembler.ItemBuilder:new():apply() QualityAssembler.ItemBuilder:new():apply()
@ -92,8 +91,7 @@ QualityAssembler.RecipeBuilder:new()
{ type = "item", name = "quantum-processor", amount = 10 } { type = "item", name = "quantum-processor", amount = 10 }
}) })
:apply({ :apply({
category = "electromagnetics", category = "electromagnetics-or-quality-assembling",
additional_categories = { "quality-assembling" }
}) })
QualityAssembler.TechnologyBuilder:new() QualityAssembler.TechnologyBuilder:new()
@ -149,49 +147,71 @@ data:extend({
}, },
research_trigger = { type = "craft-item", item = "gold-quality-catalyst", count = 10000 }, research_trigger = { type = "craft-item", item = "gold-quality-catalyst", count = 10000 },
prerequisites = { "experienced-quality-assembling-1" } prerequisites = { "experienced-quality-assembling-1" }
},
{
type = "recipe-category",
name = "quality-assembling"
} }
}) })
local function qa(recipeName) local function convert_category(name)
local recipe = data.raw.recipe[recipeName] local quality_name = name .. "-or-quality-assembling"
recipe.additional_categories = recipe.additional_categories or {} data:extend({
table.insert(recipe.additional_categories, "quality-assembling") {
type = "recipe-category",
name = quality_name
}
})
for _, assembler in pairs(data.raw["assembling-machine"]) do
if assembler.crafting_categories and table.contains(assembler.crafting_categories, name) then
table.insert(assembler.crafting_categories, quality_name)
end
end
for _, character in pairs(data.raw["character"]) do
if character.crafting_categories and table.contains(character.crafting_categories, name) then
table.insert(character.crafting_categories, quality_name)
end
end
table.insert(data.raw["assembling-machine"]["quality-assembler"].crafting_categories, quality_name)
end end
convert_category("wood-processing-or-assembling")
convert_category("metallurgy-or-assembling")
convert_category("metallurgy")
convert_category("electronics")
convert_category("electronics-or-assembling")
convert_category("electromagnetics")
convert_category("organic-or-assembling")
convert_category("crafting")
convert_category("cryogenics-or-assembling")
-- Lignumis -- Lignumis
qa("lumber-mill") data.raw.recipe["lumber-mill"].category = "wood-processing-or-assembling-or-quality-assembling"
-- Nauvis -- Nauvis
qa("logistic-robot") data.raw.recipe["logistic-robot"].category = "crafting-or-quality-assembling"
qa("construction-robot") data.raw.recipe["construction-robot"].category = "crafting-or-quality-assembling"
qa("roboport") data.raw.recipe["roboport"].category = "crafting-or-quality-assembling"
qa("speed-module-3") data.raw.recipe["speed-module-3"].category = "electronics-or-quality-assembling"
qa("productivity-module-3") data.raw.recipe["productivity-module-3"].category = "electronics-or-quality-assembling"
qa("efficiency-module-3") data.raw.recipe["efficiency-module-3"].category = "electronics-or-quality-assembling"
qa("rocket-silo") data.raw.recipe["rocket-silo"].category = "crafting-or-quality-assembling"
qa("cargo-bay") data.raw.recipe["cargo-bay"].category = "crafting-or-quality-assembling"
qa("asteroid-collector") data.raw.recipe["asteroid-collector"].category = "crafting-or-quality-assembling"
qa("thruster") data.raw.recipe["thruster"].category = "crafting-or-quality-assembling"
-- Vulcanus -- Vulcanus
qa("foundry") data.raw.recipe["foundry"].category = "metallurgy-or-assembling-or-quality-assembling"
qa("big-mining-drill") data.raw.recipe["big-mining-drill"].category = "metallurgy-or-quality-assembling"
-- Fulgora -- Fulgora
qa("electromagnetic-plant") data.raw.recipe["electromagnetic-plant"].category = "electronics-or-assembling-or-quality-assembling"
qa("lightning-collector") data.raw.recipe["lightning-collector"].category = "electromagnetics-or-quality-assembling"
qa("mech-armor") data.raw.recipe["mech-armor"].category = "crafting-or-quality-assembling"
qa("quality-module-3") data.raw.recipe["quality-module-3"].category = "electronics-or-quality-assembling"
qa("recycler") data.raw.recipe["recycler"].category = "crafting-or-quality-assembling"
-- Gleba -- Gleba
qa("biochamber") data.raw.recipe["biochamber"].category = "organic-or-assembling-or-quality-assembling"
qa("stack-inserter") data.raw.recipe["stack-inserter"].category = "crafting-or-quality-assembling"
qa("spidertron") data.raw.recipe["spidertron"].category = "crafting-or-quality-assembling"
-- Aquilo -- Aquilo
qa("cryogenic-plant") data.raw.recipe["cryogenic-plant"].category = "cryogenics-or-assembling-or-quality-assembling"

View file

@ -20,6 +20,7 @@ assembling_machine.crafting_categories = {
"crafting", "crafting",
"electronics", "electronics",
"pressing", "pressing",
"wood-processing-or-assembling",
"organic-or-assembling", "organic-or-assembling",
"electronics-or-assembling", "electronics-or-assembling",
"metallurgy-or-assembling", "metallurgy-or-assembling",

View file

@ -144,8 +144,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "wood-lab", name = "wood-lab",
category = "crafting", category = "wood-processing-or-assembling",
additional_categories = { "wood-processing" },
energy_required = 2, energy_required = 2,
ingredients = { ingredients = {
{ type = "item", name = "lumber", amount = 6 }, { type = "item", name = "lumber", amount = 6 },

View file

@ -1,151 +1,104 @@
local BeltFactory = require(MF.logistics .. "Belts") local BeltFactory = require(MF.logistics .. "Belts")
local Belt = BeltFactory("wood", "brown", "slow") local Belt = BeltFactory("wood", "brown", "slow")
local Recipe = require("__cf-lib__/data/Recipe")
local Item = require("__cf-lib__/data/Item")
local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value
if not mods["wood-logistics"] then Belt.EntityBuilder:new()
Belt.EntityBuilder:new() :itemsPerSecond(7.5)
:itemsPerSecond(7.5) :nextTier("")
:nextTier("") :undergroundDistance(4)
:undergroundDistance(4) :animationSpeedMultiplier(1.01)
:animationSpeedMultiplier(1.01) :apply({
:apply({ transportBelt = {
transportBelt = { emissions_per_second = { noise = 2 / 60 }
emissions_per_second = { noise = 2 / 60 } },
}, undergroundBelt = {
undergroundBelt = { emissions_per_second = { noise = 7.5 / 60 },
emissions_per_second = { noise = 7.5 / 60 }, factoriopedia_simulation = {
factoriopedia_simulation = { init =
init = [[
[[ game.simulation.camera_position = {0, 0.5}
game.simulation.camera_position = {0, 0.5} game.simulation.camera_zoom = 1.8
game.simulation.camera_zoom = 1.8 game.surfaces[1].create_entities_from_blueprint_string
game.surfaces[1].create_entities_from_blueprint_string {
{ string = "0eNqVUNsKgzAM/Zc81+FEBfsrYwwvQQKaltpuivjvS3Wwh8HGnkKSc0tWaIaA1hF70CtMXNvEm6R31MV+Bl0oWECfNwXUGp5AXwRGPddDBHA9Imh4GNMlgTt0vTNSkwYHD5EjsznSrwqQPXnCQ2JvlhuHsUEnAPVdSoE1k7ANv2KlpyOYVLHpyGF7bHMFfrFRidiGGOLDLPvXLP9tZoLf3eRO8jjK5P1YBXd0004oyqzKq6ooqzLNinLbnvlmf6E=",
string = "0eNqVUNsKgzAM/Zc81+FEBfsrYwwvQQKaltpuivjvS3Wwh8HGnkKSc0tWaIaA1hF70CtMXNvEm6R31MV+Bl0oWECfNwXUGp5AXwRGPddDBHA9Imh4GNMlgTt0vTNSkwYHD5EjsznSrwqQPXnCQ2JvlhuHsUEnAPVdSoE1k7ANv2KlpyOYVLHpyGF7bHMFfrFRidiGGOLDLPvXLP9tZoLf3eRO8jjK5P1YBXd0004oyqzKq6ooqzLNinLbnvlmf6E=", position = {-0.5, 0}
position = {-0.5, 0}
}
]]
} }
}, ]]
splitter = {
emissions_per_second = { noise = 20 / 60 }
} }
}) },
splitter = {
emissions_per_second = { noise = 20 / 60 }
}
})
local splitter_item = Belt.ItemBuilder:new() local splitter_item = Belt.ItemBuilder:new()
:itemsPerRocket("transportBelt", 200) :itemsPerRocket("transportBelt", 200)
:itemsPerRocket("undergroundBelt", 100) :itemsPerRocket("undergroundBelt", 100)
:itemsPerRocket("splitter", 100) :itemsPerRocket("splitter", 100)
:order("0") :order("0")
:apply() :apply()
.splitter .splitter
Belt.RecipeBuilder:new() Belt.RecipeBuilder:new()
:beltAmount(2) :beltAmount(2)
:ingredients("transportBelt", { :ingredients("transportBelt", {
{ type = "item", name = "lumber", amount = 1 }, { type = "item", name = "lumber", amount = 1 },
{ type = "item", name = "wooden-gear-wheel", amount = 1 } { type = "item", name = "wooden-gear-wheel", amount = 1 }
}) })
:ingredients("undergroundBelt", { :ingredients("undergroundBelt", {
{ type = "item", name = "lumber", amount = 1 }, { type = "item", name = "lumber", amount = 1 },
{ type = "item", name = "wood-transport-belt", amount = 4 }, { type = "item", name = "wood-transport-belt", amount = 4 },
}) })
:ingredients("splitter", { :ingredients("splitter", {
{ type = "item", name = "wood-transport-belt", amount = 2 }, { type = "item", name = "wood-transport-belt", amount = 2 },
{ type = "item", name = "lumber", amount = 2 }, { type = "item", name = "lumber", amount = 2 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or
{ type = "item", name = "gold-cable", amount = 10 } { type = "item", name = "gold-cable", amount = 10 }
}) })
:apply({ :apply({
transportBelt = { transportBelt = {
additional_categories = { "wood-processing" } category = "wood-processing-or-assembling"
}, },
undergroundBelt = { undergroundBelt = {
additional_categories = { "wood-processing" } category = "wood-processing-or-assembling"
}, },
splitter = { splitter = {
additional_categories = { "wood-processing" } category = "wood-processing-or-assembling"
} }
}) })
Belt.TechnologyBuilder:new() Belt.TechnologyBuilder:new()
:prerequisites({ "wood-science-pack" }) :prerequisites({ "wood-science-pack" })
:ingredients({ { "wood-science-pack", 1 } }) :ingredients({ { "wood-science-pack", 1 } })
:count(10) :count(10)
:time(10) :time(10)
:apply() :apply()
if not basic_circuit_board then if not basic_circuit_board then
data:extend({ data:extend({
Belt.RecipeBuilder:new() Belt.RecipeBuilder:new()
:ingredients("splitter", { :ingredients("splitter", {
{ type = "item", name = "wood-transport-belt", amount = 2 }, { type = "item", name = "wood-transport-belt", amount = 2 },
{ type = "item", name = "lumber", amount = 2 }, { type = "item", name = "lumber", amount = 2 },
{ type = "item", name = "electronic-circuit", amount = 2 } { type = "item", name = "electronic-circuit", amount = 2 }
}) })
:build({ :build({
splitter = { splitter = {
name = "wood-splitter-electronic-circuit", name = "wood-splitter-electronic-circuit",
localised_name = { "entity-name.wood-splitter" }, localised_name = { "entity-name.wood-splitter" },
icons = { icons = {
{ icon = splitter_item.icon }, { icon = splitter_item.icon },
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } } { icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
}, },
additional_categories = { "wood-processing" } category = "wood-processing-or-assembling"
}
})
.splitter
})
table.insert(data.raw.technology["electronics"].effects, {
type = "unlock-recipe",
recipe = "wood-splitter-electronic-circuit"
})
end
else
Recipe:new("wood-transport-belt")
:replaceIngredient("copper-cable", "wooden-gear-wheel", 1)
:assign({
additional_categories = { "wood-processing" }
})
Recipe:new("wood-underground-belt")
:assign({
additional_categories = { "wood-processing" }
})
Recipe:new("wood-splitter")
:replaceIngredient("copper-cable", basic_circuit_board and "basic-circuit-board" or "gold-cable", basic_circuit_board and 5 or nil)
:assign({
additional_categories = { "wood-processing" }
})
if not basic_circuit_board then
Recipe:new("wood-splitter")
:clone("wood-splitter-electronic-circuit")
:replaceIngredient(basic_circuit_board and "gold-cable" or "basic-circuit-board", "electronic-circuit", 2)
:assign({
localised_name = { "entity-name.wood-splitter" },
icons = {
{ icon = data.raw.item["wood-splitter"].icon },
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
} }
}) })
:unlockedByTechnology("electronics") .splitter
:apply() })
end
Item:new("wood-transport-belt") table.insert(data.raw.technology["electronics"].effects, {
:itemsPerRocket(200) type = "unlock-recipe",
:defaultImportLocation("lignumis") recipe = "wood-splitter-electronic-circuit"
Item:new("wood-underground-belt") })
:itemsPerRocket(100)
:defaultImportLocation("lignumis")
Item:new("wood-splitter")
:itemsPerRocket(100)
:defaultImportLocation("lignumis")
end end

View file

@ -82,8 +82,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "wood-darts-magazine", name = "wood-darts-magazine",
category = "crafting", category = "wood-processing-or-assembling",
additional_categories = { "wood-processing" },
energy_required = 1, energy_required = 1,
ingredients = { { type = "item", name = "wood", amount = 2 } }, ingredients = { { type = "item", name = "wood", amount = 2 } },
results = { { type = "item", name = "wood-darts-magazine", amount = 1 } } results = { { type = "item", name = "wood-darts-magazine", amount = 1 } }

View file

@ -17,8 +17,7 @@ data:extend({
{ {
type = "recipe", type = "recipe",
name = "wooden-gear-wheel", name = "wooden-gear-wheel",
category = "crafting", category = "wood-processing-or-assembling",
additional_categories = { "wood-processing" },
ingredients = { { type = "item", name = "lumber", amount = 1 } }, ingredients = { { type = "item", name = "lumber", amount = 1 } },
results = { { type = "item", name = "wooden-gear-wheel", amount = 2 } }, results = { { type = "item", name = "wooden-gear-wheel", amount = 2 } },
allow_productivity = true allow_productivity = true

View file

@ -1,4 +1,4 @@
local recipe = data.raw.recipe["wooden-wall"] local recipe = data.raw.recipe["wooden-wall"]
recipe.ingredients = { { type = "item", name = "lumber", amount = 4 } } recipe.ingredients = { { type = "item", name = "lumber", amount = 4 } }
recipe.results = { { type = "item", name = "wooden-wall", amount = 1 } } recipe.results = { { type = "item", name = "wooden-wall", amount = 1 } }
recipe.additional_categories = { "wood-processing" } recipe.category = "wood-processing-or-assembling"

View file

@ -21,8 +21,7 @@ local drill_item = data.raw["item"]["burner-mining-drill"]
drill_item.icon = Lignumis.graphics .. "icons/burner-mining-drill.png" drill_item.icon = Lignumis.graphics .. "icons/burner-mining-drill.png"
local drill_recipe = data.raw["recipe"]["burner-mining-drill"] local drill_recipe = data.raw["recipe"]["burner-mining-drill"]
drill_recipe.category = "crafting" drill_recipe.category = "wood-processing-or-assembling"
drill_recipe.additional_categories = { "wood-processing" }
drill_recipe.ingredients = { drill_recipe.ingredients = {
{ type = "item", name = "stone-furnace", amount = 1 }, { type = "item", name = "stone-furnace", amount = 1 },
{ type = "item", name = "wooden-gear-wheel", amount = basic_circuit_board and 2 or 3 }, { type = "item", name = "wooden-gear-wheel", amount = basic_circuit_board and 2 or 3 },
@ -49,7 +48,7 @@ burner_inserter_recipe.ingredients = {
{ type = "item", name = "lumber", amount = 1 } { type = "item", name = "lumber", amount = 1 }
} }
if settings.startup["lignumis-lumber-mill-more-recipes"].value then if settings.startup["lignumis-lumber-mill-more-recipes"].value then
burner_inserter_recipe.additional_categories = { "wood-processing" } burner_inserter_recipe.category = "wood-processing-or-assembling"
end end
@ -132,7 +131,10 @@ if mods["Diversitree"] then
data.raw.plant["s6xdvt-fake-tree"].surface_conditions[1].min = 900 data.raw.plant["s6xdvt-fake-tree"].surface_conditions[1].min = 900
end end
table.insert(data.raw["assembling-machine"]["assembling-machine-1"].crafting_categories, "wood-processing-or-assembling")
table.insert(data.raw["assembling-machine"]["assembling-machine-1"].crafting_categories, "organic-or-assembling") table.insert(data.raw["assembling-machine"]["assembling-machine-1"].crafting_categories, "organic-or-assembling")
table.insert(data.raw["assembling-machine"]["assembling-machine-2"].crafting_categories, "wood-processing-or-assembling")
table.insert(data.raw["assembling-machine"]["assembling-machine-3"].crafting_categories, "wood-processing-or-assembling")
-- Disable vanilla early game recipes -- Disable vanilla early game recipes
@ -334,3 +336,35 @@ if settings.startup["lignumis-fulgora-wood"].value then
recycler.result_inventory_size = recycling_result_count recycler.result_inventory_size = recycling_result_count
end end
end end
-- Fix item weights
local function set_default_weight(item, items_per_rocket, type)
data.raw[type or "item"][item].weight = data.raw[type or "item"][item].weight or 1000 * kg / items_per_rocket
end
set_default_weight("electronic-circuit", 2000)
set_default_weight("advanced-circuit", 1000)
set_default_weight("processing-unit", 300)
set_default_weight("low-density-structure", 200)
set_default_weight("rocket-fuel", 100)
set_default_weight("inserter", 50)
set_default_weight("fast-inserter", 50)
set_default_weight("electric-mining-drill", 50)
set_default_weight("pumpjack", 20)
set_default_weight("repair-pack", 100, "repair-tool")
set_default_weight("big-electric-pole", 50)
set_default_weight("assembling-machine-1", 50)
set_default_weight("assembling-machine-2", 50)
set_default_weight("oil-refinery", 10)
set_default_weight("accumulator", 50)
set_default_weight("steam-engine", 10)
set_default_weight("substation", 50)
set_default_weight("radar", 50)
set_default_weight("storage-tank", 50)
set_default_weight("fast-transport-belt", 100)
set_default_weight("fast-underground-belt", 50)
set_default_weight("fast-splitter", 50)
set_default_weight("steel-plate", 400)
set_default_weight("steam-turbine", 10)
set_default_weight("battery", 400)

View file

@ -1,2 +1 @@
require("wood-logistics")
require("wood-military") require("wood-military")

View file

@ -1,20 +0,0 @@
if not mods["wood-logistics"] then
return
end
local Settings = require("__cf-lib__/settings/Settings")
local force = Settings.force
local default = Settings.default
force("wood-logistics-lumber", true)
force("wood-logistics-lumber-mill", true)
force("wood-logistics-woodtronics", false)
force("wood-logistics-belts", true)
force("wood-logistics-belts-modify", false)
default("wood-logistics-belts-circuits", true)
force("wood-logistics-inserter", false)
default("wood-logistics-rail-cost", 0)
default("wood-logistics-cargo-wagon", false)
force("wood-logistics-assembling-machine", false)
default("wood-logistics-nerf-small-electric-pole", false)
force("wood-logistics-repair-pack-cost", 0)

View file

@ -2,12 +2,10 @@ if not mods["wood-military"] then
return return
end end
local Settings = require("__cf-lib__/settings/Settings") data.raw["bool-setting"]["wood-military-rockets"].default_value = false
local force = Settings.force data.raw["bool-setting"]["wood-military-artillery"].default_value = false
local default = Settings.default data.raw["bool-setting"]["wood-military-damage-buff"].default_value = false
data.raw["bool-setting"]["wood-military-armor"].hidden = true
default("wood-military-rockets", false) data.raw["bool-setting"]["wood-military-armor"].forced_value = true
default("wood-military-artillery", false) data.raw["bool-setting"]["wood-military-nerf-start"].hidden = true
default("wood-military-damage-buff", false) data.raw["bool-setting"]["wood-military-nerf-start"].forced_value = true
force("wood-military-armor", true)
force("wood-military-nerf-start", true)