forked from cacklingfiend/lignumis
Compare commits
16 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
aaea504cef | ||
![]() |
2336ad4d44 | ||
![]() |
5c556646d9 | ||
![]() |
607ce9feb8 | ||
![]() |
9bf4a5d6ff | ||
![]() |
ee9eb8faf1 | ||
![]() |
c1797dfcfe | ||
![]() |
8fb0fac800 | ||
![]() |
9cff8c4401 | ||
![]() |
25b396affc | ||
![]() |
7385751f2d | ||
![]() |
2d327c805d | ||
![]() |
014eed03aa | ||
![]() |
e14789ee81 | ||
![]() |
3fb93faea5 | ||
b746a7c88c |
19 changed files with 196 additions and 56 deletions
|
@ -1,4 +1,5 @@
|
||||||
[](https://discord.gg/ufvFUJtVwk)[](https://git.cacklingfiend.info/cacklingfiend/lignumis)[](https://mods.factorio.com/mod/lignumis/metrics?range=last_two_months&type=mod_downloads)
|
[](https://discord.gg/ufvFUJtVwk)[](https://git.cacklingfiend.info/cacklingfiend/lignumis)[](https://mods.factorio.com/mod/lignumis/metrics?range=last_two_months&type=mod_downloads)
|
||||||
|
|
||||||
_________________
|
_________________
|
||||||

|

|
||||||
|
|
||||||
|
@ -117,7 +118,6 @@ _________________
|
||||||
## Problematic / incompatible mods
|
## Problematic / incompatible mods
|
||||||
|
|
||||||
* The combination of AAI Industry and Any planet start is currently not supported.
|
* The combination of AAI Industry and Any planet start is currently not supported.
|
||||||
* Alien Biomes: Lignumis won't have any trees. It's playable, but not as intended.
|
|
||||||
* The rest of the Wooden Universe: I marked the ones incompatible that don't make sense to combine or that wouldn't add more that is not already included.
|
* The rest of the Wooden Universe: I marked the ones incompatible that don't make sense to combine or that wouldn't add more that is not already included.
|
||||||
|
|
||||||
_________________
|
_________________
|
||||||
|
|
|
@ -1,4 +1,32 @@
|
||||||
---------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------
|
||||||
|
Version: 1.0.65
|
||||||
|
Date: 14.09.2025
|
||||||
|
Changes:
|
||||||
|
- Remove warning for Alien Biomes
|
||||||
|
- Add setting for infinite Astroponics productivity research
|
||||||
|
Bug Fixes:
|
||||||
|
- Fix more item weights
|
||||||
|
---------------------------------------------------------------------------------------------------
|
||||||
|
Version: 1.0.64
|
||||||
|
Date: 10.09.2025
|
||||||
|
Bug Fixes:
|
||||||
|
- Fix more item weights
|
||||||
|
- Fix steam assembler scaling with increased energy usage from modules
|
||||||
|
---------------------------------------------------------------------------------------------------
|
||||||
|
Version: 1.0.63
|
||||||
|
Date: 09.09.2025
|
||||||
|
Changes:
|
||||||
|
- Wooden belts have half the weight
|
||||||
|
Bug Fixes:
|
||||||
|
- Fix vanilla more item weights
|
||||||
|
---------------------------------------------------------------------------------------------------
|
||||||
|
Version: 1.0.62
|
||||||
|
Date: 02.09.2025
|
||||||
|
Changes:
|
||||||
|
- Add spanish locales (thanks DFOXpro)
|
||||||
|
- Add compatibility for Alien Biomes (thanks Chromebomb)
|
||||||
|
- The lumber mill can be built on Vulcanus again
|
||||||
|
---------------------------------------------------------------------------------------------------
|
||||||
Version: 1.0.61
|
Version: 1.0.61
|
||||||
Date: 29.08.2025
|
Date: 29.08.2025
|
||||||
Changes:
|
Changes:
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
"name": "lignumis",
|
"name": "lignumis",
|
||||||
"version": "1.0.61",
|
"version": "1.0.65",
|
||||||
"title": "Lignumis",
|
"title": "Lignumis",
|
||||||
"description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.",
|
"description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.",
|
||||||
"author": "cackling fiend",
|
"author": "cackling fiend",
|
||||||
"homepage": "https://discord.gg/5bevXf5W",
|
"homepage": "https://discord.gg/ufvFUJtVwk",
|
||||||
"factorio_version": "2.0",
|
"factorio_version": "2.0",
|
||||||
"space_travel_required": true,
|
"space_travel_required": true,
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
|
|
|
@ -190,6 +190,7 @@ lignumis-early-robots=Even earlier personal robots
|
||||||
lignumis-vanilla-lab=Keep vanilla lab recipe
|
lignumis-vanilla-lab=Keep vanilla lab recipe
|
||||||
lignumis-double-rocket=Double provisional rocket cargo capacity
|
lignumis-double-rocket=Double provisional rocket cargo capacity
|
||||||
lignumis-sciences-spoil=Lignumis science packs spoil
|
lignumis-sciences-spoil=Lignumis science packs spoil
|
||||||
|
lignumis-infinite-astroponics-productivity-research=Infinite productivity research for Astroponics
|
||||||
|
|
||||||
[mod-setting-description]
|
[mod-setting-description]
|
||||||
lignumis-belt-progression=Yellow belts will require wood belts to craft.
|
lignumis-belt-progression=Yellow belts will require wood belts to craft.
|
||||||
|
@ -205,6 +206,7 @@ lignumis-early-robots=Personal robots are moved from steam to wood science and a
|
||||||
lignumis-vanilla-lab=Moves the transport belt recipe to Iron processing so the lab can be crafted with the original recipe without requiring to research logistics.
|
lignumis-vanilla-lab=Moves the transport belt recipe to Iron processing so the lab can be crafted with the original recipe without requiring to research logistics.
|
||||||
lignumis-double-rocket=The provisional rocket can carry 80 instead of 40 slots.
|
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-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).
|
||||||
|
|
||||||
[autoplace-control-names]
|
[autoplace-control-names]
|
||||||
lignumis_enemy_base=Lignumis enemy bases
|
lignumis_enemy_base=Lignumis enemy bases
|
||||||
|
|
67
lignumis/prototypes/compatibility/alien-biomes-final.lua
Normal file
67
lignumis/prototypes/compatibility/alien-biomes-final.lua
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
-- Lignumis + Alien Biomes Compatibility - Final Fixes
|
||||||
|
--
|
||||||
|
-- This runs AFTER alien-biomes data-updates.lua to ensure our fixes aren't overridden
|
||||||
|
-- Load order: data.lua -> data-updates.lua -> data-final-fixes.lua (THIS FILE)
|
||||||
|
|
||||||
|
if not mods["alien-biomes"] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Define Lignumis grass tiles (from mapgen.lua)
|
||||||
|
local lignumis_grass_tiles = {
|
||||||
|
"grass-1",
|
||||||
|
"grass-2",
|
||||||
|
"grass-3",
|
||||||
|
"grass-4",
|
||||||
|
"natural-gold-soil"
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Fix tree plant for manual planting on Lignumis grass tiles
|
||||||
|
local tree_plant = data.raw.plant["tree-plant"]
|
||||||
|
if mods["Diversitree"] then
|
||||||
|
tree_plant = data.raw.plant["s6xdvt-fake-tree"]
|
||||||
|
end
|
||||||
|
|
||||||
|
if tree_plant then
|
||||||
|
for _, tile in pairs(lignumis_grass_tiles) do
|
||||||
|
local already_present = false
|
||||||
|
for _, existing_tile in pairs(tree_plant.autoplace.tile_restriction) do
|
||||||
|
if existing_tile == tile then
|
||||||
|
already_present = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not already_present then
|
||||||
|
table.insert(tree_plant.autoplace.tile_restriction, tile)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fix tree autoplace restrictions for natural tree spawning
|
||||||
|
for _, tree in pairs(data.raw.tree) do
|
||||||
|
if tree.autoplace and tree.autoplace.tile_restriction then
|
||||||
|
-- Skip gold stromatolites - they should remain exclusive to natural-gold-soil
|
||||||
|
local is_gold_stromatolite = tree.name and (tree.name:find("stromatolite") or tree.name:find("gold"))
|
||||||
|
|
||||||
|
if not is_gold_stromatolite then
|
||||||
|
-- Check if Lignumis grass tiles are missing
|
||||||
|
local has_lignumis_tiles = false
|
||||||
|
for _, existing_tile in pairs(tree.autoplace.tile_restriction) do
|
||||||
|
for _, lignumis_tile in pairs(lignumis_grass_tiles) do
|
||||||
|
if existing_tile == lignumis_tile then
|
||||||
|
has_lignumis_tiles = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if has_lignumis_tiles then break end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add Lignumis grass tiles if missing
|
||||||
|
if not has_lignumis_tiles then
|
||||||
|
for _, tile_name in pairs(lignumis_grass_tiles) do
|
||||||
|
table.insert(tree.autoplace.tile_restriction, tile_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -6,6 +6,7 @@ settings["small-rock"] = nil
|
||||||
settings["tiny-rock"] = nil
|
settings["tiny-rock"] = nil
|
||||||
|
|
||||||
-- Fix trees not being plantable on Alien Biomes tiles
|
-- Fix trees not being plantable on Alien Biomes tiles
|
||||||
|
-- Note: Additional tree fixes for Lignumis grass tiles are handled in alien-biomes-final.lua
|
||||||
local tile_restriction = data.raw["plant"]["tree-plant"].autoplace.tile_restriction
|
local tile_restriction = data.raw["plant"]["tree-plant"].autoplace.tile_restriction
|
||||||
for _, tile in pairs(alien_biomes.all_tiles()) do
|
for _, tile in pairs(alien_biomes.all_tiles()) do
|
||||||
if tile.tags and (table.contains(tile.tags, "dirt") or table.contains(tile.tags, "grass")) then
|
if tile.tags and (table.contains(tile.tags, "dirt") or table.contains(tile.tags, "grass")) then
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
require("aai-loaders-final")
|
require("aai-loaders-final")
|
||||||
require("any-planet-start-final")
|
require("any-planet-start-final")
|
||||||
|
require("alien-biomes-final")
|
||||||
|
|
||||||
if not data.raw.technology["legendary-quality"] then
|
if not data.raw.technology["legendary-quality"] then
|
||||||
table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality")
|
table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality")
|
||||||
|
|
|
@ -78,7 +78,8 @@ data:extend({
|
||||||
drop_sound = item_sounds.mechanical_large_inventory_move,
|
drop_sound = item_sounds.mechanical_large_inventory_move,
|
||||||
place_result = "burner-agricultural-tower",
|
place_result = "burner-agricultural-tower",
|
||||||
stack_size = 20,
|
stack_size = 20,
|
||||||
default_import_location = "lignumis"
|
default_import_location = "lignumis",
|
||||||
|
weight = 100 * kg
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "recipe",
|
type = "recipe",
|
||||||
|
|
|
@ -146,7 +146,8 @@ data:extend({
|
||||||
subgroup = "circuit-network", -- Copper lamp under circuit-network
|
subgroup = "circuit-network", -- Copper lamp under circuit-network
|
||||||
order = "a[lamp]-b[copper-lamp]", -- Copper lamp after large lamp
|
order = "a[lamp]-b[copper-lamp]", -- Copper lamp after large lamp
|
||||||
place_result = "burner-lamp",
|
place_result = "burner-lamp",
|
||||||
stack_size = 50
|
stack_size = 50,
|
||||||
|
weight = 20 * kg
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "burner-lamp",
|
name = "burner-lamp",
|
||||||
|
|
|
@ -435,7 +435,7 @@ make_wriggler("lignumis-small-", 0.2, 10, 0.1,
|
||||||
space_age_sounds.wriggler_pentapod.small
|
space_age_sounds.wriggler_pentapod.small
|
||||||
)
|
)
|
||||||
|
|
||||||
make_wriggler("lignumis-medium-", 0.4, 20, 0.2,
|
make_wriggler("lignumis-medium-", 0.5, 50, 1,
|
||||||
{
|
{
|
||||||
mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.4), 0.2),
|
mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.4), 0.2),
|
||||||
body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.4), 0.2)
|
body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.4), 0.2)
|
||||||
|
|
|
@ -84,6 +84,7 @@ local pipe_item = {
|
||||||
place_result = "gold-pipe",
|
place_result = "gold-pipe",
|
||||||
stack_size = 100,
|
stack_size = 100,
|
||||||
weight = 5 * kg,
|
weight = 5 * kg,
|
||||||
|
default_import_location = "lignumis",
|
||||||
random_tint_color = item_tints.iron_rust
|
random_tint_color = item_tints.iron_rust
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,6 +160,8 @@ local pipe_to_ground_item = {
|
||||||
drop_sound = item_sounds.metal_small_inventory_move,
|
drop_sound = item_sounds.metal_small_inventory_move,
|
||||||
place_result = "gold-pipe-to-ground",
|
place_result = "gold-pipe-to-ground",
|
||||||
stack_size = 50,
|
stack_size = 50,
|
||||||
|
weight = 5 * kg,
|
||||||
|
default_import_location = "lignumis",
|
||||||
random_tint_color = item_tints.iron_rust
|
random_tint_color = item_tints.iron_rust
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,7 +350,9 @@ local tank_item = {
|
||||||
pick_sound = item_sounds.metal_large_inventory_pickup,
|
pick_sound = item_sounds.metal_large_inventory_pickup,
|
||||||
drop_sound = item_sounds.metal_large_inventory_move,
|
drop_sound = item_sounds.metal_large_inventory_move,
|
||||||
place_result = "gold-storage-tank",
|
place_result = "gold-storage-tank",
|
||||||
stack_size = 10
|
stack_size = 10,
|
||||||
|
weight = 50 * kg,
|
||||||
|
default_import_location = "lignumis"
|
||||||
}
|
}
|
||||||
|
|
||||||
local tank_recipe = {
|
local tank_recipe = {
|
||||||
|
|
|
@ -25,7 +25,7 @@ LumberMill.EntityBuilder:new()
|
||||||
surface_conditions = {
|
surface_conditions = {
|
||||||
{
|
{
|
||||||
property = has_oxygen and "oxygen" or "pressure",
|
property = has_oxygen and "oxygen" or "pressure",
|
||||||
min = 10
|
min = 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property = "gravity",
|
property = "gravity",
|
||||||
|
|
|
@ -31,6 +31,7 @@ assembling_machine.energy_usage = "25kW"
|
||||||
assembling_machine.energy_source = {
|
assembling_machine.energy_source = {
|
||||||
type = "fluid",
|
type = "fluid",
|
||||||
maximum_temperature = 165,
|
maximum_temperature = 165,
|
||||||
|
scale_fluid_usage = true,
|
||||||
effectivity = 1,
|
effectivity = 1,
|
||||||
emissions_per_minute = { noise = 50 },
|
emissions_per_minute = { noise = 50 },
|
||||||
fluid_box = {
|
fluid_box = {
|
||||||
|
|
|
@ -33,9 +33,9 @@ Belt.EntityBuilder:new()
|
||||||
})
|
})
|
||||||
|
|
||||||
local splitter_item = Belt.ItemBuilder:new()
|
local splitter_item = Belt.ItemBuilder:new()
|
||||||
:itemsPerRocket("transportBelt", 100)
|
:itemsPerRocket("transportBelt", 200)
|
||||||
:itemsPerRocket("undergroundBelt", 50)
|
:itemsPerRocket("undergroundBelt", 100)
|
||||||
:itemsPerRocket("splitter", 50)
|
:itemsPerRocket("splitter", 100)
|
||||||
:order("0")
|
:order("0")
|
||||||
:apply()
|
:apply()
|
||||||
.splitter
|
.splitter
|
||||||
|
|
|
@ -76,7 +76,8 @@ data:extend({
|
||||||
pick_sound = item_sounds.wood_inventory_pickup,
|
pick_sound = item_sounds.wood_inventory_pickup,
|
||||||
drop_sound = item_sounds.wood_inventory_move,
|
drop_sound = item_sounds.wood_inventory_move,
|
||||||
stack_size = 100,
|
stack_size = 100,
|
||||||
weight = 10 * kg
|
weight = 5 * kg,
|
||||||
|
default_import_location = "lignumis"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "recipe",
|
type = "recipe",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
data:extend({
|
local infinite = settings.startup["lignumis-infinite-astroponics-productivity-research"].value
|
||||||
{
|
|
||||||
|
local base_levels = {
|
||||||
type = "technology",
|
type = "technology",
|
||||||
name = "astroponics-productivity",
|
name = "astroponics-productivity",
|
||||||
icons = {
|
icons = {
|
||||||
|
@ -35,4 +36,14 @@ data:extend({
|
||||||
time = 60
|
time = 60
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
data:extend({ base_levels })
|
||||||
|
|
||||||
|
if infinite then
|
||||||
|
local infinite_levels = table.deepcopy(base_levels)
|
||||||
|
infinite_levels.name = "astroponics-productivity-6"
|
||||||
|
infinite_levels.max_level = "infinite"
|
||||||
|
infinite_levels.unit.count_formula = "2^(L-6)*1500"
|
||||||
|
table.insert(infinite_levels.unit.ingredients, { "agricultural-science-pack", 1 })
|
||||||
|
infinite_levels.prerequisites = { "astroponics-productivity", "agricultural-science-pack" }
|
||||||
|
data:extend({ infinite_levels })
|
||||||
|
end
|
||||||
|
|
|
@ -339,11 +339,29 @@ end
|
||||||
|
|
||||||
-- Fix item weights
|
-- Fix item weights
|
||||||
|
|
||||||
local function set_default_weight(item, items_per_rocket)
|
local function set_default_weight(item, items_per_rocket, type)
|
||||||
data.raw.item[item].weight = data.raw.item[item].weight or 1000 * kg / items_per_rocket
|
data.raw[type or "item"][item].weight = data.raw[type or "item"][item].weight or 1000 * kg / items_per_rocket
|
||||||
end
|
end
|
||||||
set_default_weight("electronic-circuit", 2000)
|
set_default_weight("electronic-circuit", 2000)
|
||||||
set_default_weight("advanced-circuit", 1000)
|
set_default_weight("advanced-circuit", 1000)
|
||||||
set_default_weight("processing-unit", 300)
|
set_default_weight("processing-unit", 300)
|
||||||
set_default_weight("low-density-structure", 200)
|
set_default_weight("low-density-structure", 200)
|
||||||
set_default_weight("rocket-fuel", 100)
|
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)
|
|
@ -67,10 +67,6 @@ Init.events[defines.events.on_player_created] = function(event)
|
||||||
|
|
||||||
storage.init[event.player_index] = true
|
storage.init[event.player_index] = true
|
||||||
|
|
||||||
if script.active_mods["alien-biomes"] then
|
|
||||||
game.print("While Alien Biomes is playable with Lignumis, it is not recommended as it prevents trees from being generated on Lignumis.")
|
|
||||||
end
|
|
||||||
|
|
||||||
if not script.active_mods["Burner-Leech-Fork"] and not script.active_mods["Burner-Leech"] and not script.active_mods["InserterFuelLeech"] then
|
if not script.active_mods["Burner-Leech-Fork"] and not script.active_mods["Burner-Leech"] and not script.active_mods["InserterFuelLeech"] then
|
||||||
game.print("Lignumis: You are starting a new game without a burner leech mod. The intended experience is to use one of the available options. You can disable such a mod after the burner phase of the game. See the mod page for more details.")
|
game.print("Lignumis: You are starting a new game without a burner leech mod. The intended experience is to use one of the available options. You can disable such a mod after the burner phase of the game. See the mod page for more details.")
|
||||||
end
|
end
|
||||||
|
|
|
@ -90,6 +90,13 @@ data:extend({
|
||||||
default_value = false,
|
default_value = false,
|
||||||
order = "m"
|
order = "m"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type = "bool-setting",
|
||||||
|
name = "lignumis-infinite-astroponics-productivity-research",
|
||||||
|
setting_type = "startup",
|
||||||
|
default_value = false,
|
||||||
|
order = "n"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type = "string-setting",
|
type = "string-setting",
|
||||||
name = "lignumis-second-planet",
|
name = "lignumis-second-planet",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue