diff --git a/README.md b/README.md index fd55804..c5a282a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/ufvFUJtVwk)[![Forgejo](https://img.shields.io/badge/source%20code-%23f4f4f5?style=for-the-badge&logo=forgejo&logoColor=%23c2410c)](https://git.cacklingfiend.info/cacklingfiend/lignumis)[![Downloads](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fmods.factorio.com%2Fapi%2Fmods%2Flignumis&query=%24.downloads_count&suffix=%20Downloads&style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI%2FPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI%2BCjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMTIxNnB0IiBoZWlnaHQ9IjEyODBwdCIgdmlld0JveD0iMCAwIDEyMTYgMTI4MCIKIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDEyODApIHNjYWxlKDAuMSwtMC4xKSIKZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTM0NzAgOTYwMCBsMCAtMzIwMCAtMTczMSAwIGMtOTUyIDAgLTE3MjkgLTQgLTE3MjcgLTggNCAtMTIgNjA2MgotNjM5MCA2MDY4IC02MzkwIDYgMCA2MDY0IDYzNzggNjA2OCA2MzkwIDIgNCAtNzc1IDggLTE3MjcgOCBsLTE3MzEgMCAwIDMyMDAKMCAzMjAwIC0yNjEwIDAgLTI2MTAgMCAwIC0zMjAweiIvPgo8L2c%2BCjwvc3ZnPgo%3D&label=&labelColor=%23e39827&color=%23e39827)](https://mods.factorio.com/mod/lignumis/metrics?range=last_two_months&type=mod_downloads) + _________________ ![Lignumis poster](https://git.cacklingfiend.info/cacklingfiend/lignumis-assets/raw/branch/main/sources/readme/poster.jpg) @@ -117,7 +118,6 @@ _________________ ## Problematic / incompatible mods * 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. _________________ @@ -178,7 +178,7 @@ _________________ - Fix pipe graphics on desiccation furnace and quality assembler - Trees must not die when absorbing noise - - https://lua-api.factorio.com/latest/types/TreeVariation.html + - https://lua-api.factorio.com/latest/types/TreeVariation.html - Add information in Factoriopedia - Compatibility with [On Wayward Seas](https://mods.factorio.com/mod/wayward-seas) - Compatibility with [Exotic Space Industries](https://mods.factorio.com/mod/exotic-space-industries) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 697635c..bdcde83 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -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 Date: 29.08.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index dcb6c17..95b1cea 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,10 +1,10 @@ { "name": "lignumis", - "version": "1.0.61", + "version": "1.0.65", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", - "homepage": "https://discord.gg/5bevXf5W", + "homepage": "https://discord.gg/ufvFUJtVwk", "factorio_version": "2.0", "space_travel_required": true, "dependencies": [ diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 09877f7..a9481d3 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -190,6 +190,7 @@ lignumis-early-robots=Even earlier personal robots lignumis-vanilla-lab=Keep vanilla lab recipe lignumis-double-rocket=Double provisional rocket cargo capacity lignumis-sciences-spoil=Lignumis science packs spoil +lignumis-infinite-astroponics-productivity-research=Infinite productivity research for Astroponics [mod-setting-description] 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-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). [autoplace-control-names] lignumis_enemy_base=Lignumis enemy bases diff --git a/lignumis/prototypes/compatibility/alien-biomes-final.lua b/lignumis/prototypes/compatibility/alien-biomes-final.lua new file mode 100644 index 0000000..d90c64b --- /dev/null +++ b/lignumis/prototypes/compatibility/alien-biomes-final.lua @@ -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 diff --git a/lignumis/prototypes/compatibility/alien-biomes.lua b/lignumis/prototypes/compatibility/alien-biomes.lua index cd6813c..87581ee 100644 --- a/lignumis/prototypes/compatibility/alien-biomes.lua +++ b/lignumis/prototypes/compatibility/alien-biomes.lua @@ -6,6 +6,7 @@ settings["small-rock"] = nil settings["tiny-rock"] = nil -- 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 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 diff --git a/lignumis/prototypes/compatibility/final.lua b/lignumis/prototypes/compatibility/final.lua index db0c1dd..dfaf912 100644 --- a/lignumis/prototypes/compatibility/final.lua +++ b/lignumis/prototypes/compatibility/final.lua @@ -1,5 +1,6 @@ require("aai-loaders-final") require("any-planet-start-final") +require("alien-biomes-final") if not data.raw.technology["legendary-quality"] then table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality") diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index 32a2234..e76a2da 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -78,7 +78,8 @@ data:extend({ drop_sound = item_sounds.mechanical_large_inventory_move, place_result = "burner-agricultural-tower", stack_size = 20, - default_import_location = "lignumis" + default_import_location = "lignumis", + weight = 100 * kg }, { type = "recipe", diff --git a/lignumis/prototypes/content/burner-lamp.lua b/lignumis/prototypes/content/burner-lamp.lua index 57add6e..4b52e0a 100644 --- a/lignumis/prototypes/content/burner-lamp.lua +++ b/lignumis/prototypes/content/burner-lamp.lua @@ -146,7 +146,8 @@ data:extend({ subgroup = "circuit-network", -- Copper lamp under circuit-network order = "a[lamp]-b[copper-lamp]", -- Copper lamp after large lamp place_result = "burner-lamp", - stack_size = 50 + stack_size = 50, + weight = 20 * kg }, { name = "burner-lamp", diff --git a/lignumis/prototypes/content/enemies.lua b/lignumis/prototypes/content/enemies.lua index 76d76d8..eebe2f5 100644 --- a/lignumis/prototypes/content/enemies.lua +++ b/lignumis/prototypes/content/enemies.lua @@ -435,7 +435,7 @@ make_wriggler("lignumis-small-", 0.2, 10, 0.1, 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), body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.4), 0.2) diff --git a/lignumis/prototypes/content/gold/pipes.lua b/lignumis/prototypes/content/gold/pipes.lua index 4e555a4..766a788 100644 --- a/lignumis/prototypes/content/gold/pipes.lua +++ b/lignumis/prototypes/content/gold/pipes.lua @@ -84,6 +84,7 @@ local pipe_item = { place_result = "gold-pipe", stack_size = 100, weight = 5 * kg, + default_import_location = "lignumis", random_tint_color = item_tints.iron_rust } @@ -159,6 +160,8 @@ local pipe_to_ground_item = { drop_sound = item_sounds.metal_small_inventory_move, place_result = "gold-pipe-to-ground", stack_size = 50, + weight = 5 * kg, + default_import_location = "lignumis", random_tint_color = item_tints.iron_rust } @@ -347,7 +350,9 @@ local tank_item = { pick_sound = item_sounds.metal_large_inventory_pickup, drop_sound = item_sounds.metal_large_inventory_move, place_result = "gold-storage-tank", - stack_size = 10 + stack_size = 10, + weight = 50 * kg, + default_import_location = "lignumis" } local tank_recipe = { diff --git a/lignumis/prototypes/content/lumber-mill.lua b/lignumis/prototypes/content/lumber-mill.lua index 3ac959d..0bb904c 100644 --- a/lignumis/prototypes/content/lumber-mill.lua +++ b/lignumis/prototypes/content/lumber-mill.lua @@ -25,7 +25,7 @@ LumberMill.EntityBuilder:new() surface_conditions = { { property = has_oxygen and "oxygen" or "pressure", - min = 10 + min = 3 }, { property = "gravity", diff --git a/lignumis/prototypes/content/steam-assembling-machine.lua b/lignumis/prototypes/content/steam-assembling-machine.lua index ed85a59..da5ef2d 100644 --- a/lignumis/prototypes/content/steam-assembling-machine.lua +++ b/lignumis/prototypes/content/steam-assembling-machine.lua @@ -31,6 +31,7 @@ assembling_machine.energy_usage = "25kW" assembling_machine.energy_source = { type = "fluid", maximum_temperature = 165, + scale_fluid_usage = true, effectivity = 1, emissions_per_minute = { noise = 50 }, fluid_box = { diff --git a/lignumis/prototypes/content/wood-logistics.lua b/lignumis/prototypes/content/wood-logistics.lua index a575ba8..78cb353 100644 --- a/lignumis/prototypes/content/wood-logistics.lua +++ b/lignumis/prototypes/content/wood-logistics.lua @@ -33,9 +33,9 @@ Belt.EntityBuilder:new() }) local splitter_item = Belt.ItemBuilder:new() - :itemsPerRocket("transportBelt", 100) - :itemsPerRocket("undergroundBelt", 50) - :itemsPerRocket("splitter", 50) + :itemsPerRocket("transportBelt", 200) + :itemsPerRocket("undergroundBelt", 100) + :itemsPerRocket("splitter", 100) :order("0") :apply() .splitter diff --git a/lignumis/prototypes/content/wood-military.lua b/lignumis/prototypes/content/wood-military.lua index 775245b..1dd775f 100644 --- a/lignumis/prototypes/content/wood-military.lua +++ b/lignumis/prototypes/content/wood-military.lua @@ -76,7 +76,8 @@ data:extend({ pick_sound = item_sounds.wood_inventory_pickup, drop_sound = item_sounds.wood_inventory_move, stack_size = 100, - weight = 10 * kg + weight = 5 * kg, + default_import_location = "lignumis" }, { type = "recipe", diff --git a/lignumis/prototypes/integrations/astroponics.lua b/lignumis/prototypes/integrations/astroponics.lua index b531625..491069f 100644 --- a/lignumis/prototypes/integrations/astroponics.lua +++ b/lignumis/prototypes/integrations/astroponics.lua @@ -1,38 +1,49 @@ -data:extend({ - { - type = "technology", - name = "astroponics-productivity", - icons = { - { icon = "__base__/graphics/icons/wood.png", icon_size = 64 }, - { icon = "__astroponics__/graphics/icons/fluid/liquid-fertilizer.png", shift = { -32, -32 }, scale = 1.2 }, - { - icon = "__core__/graphics/icons/technology/constants/constant-recipe-productivity.png", - icon_size = 128, - scale = 0.5, - shift = { 50, 50 }, - floating = true - } - }, - essential = false, - level = 1, - max_level = 5, - show_levels_info = true, - effects = { - { - type = "change-recipe-productivity", - recipe = "tree-astroponics", - change = 0.1 - } - }, - prerequisites = { "astroponics", "production-science-pack" }, - unit = { - count_formula = "L*250", - ingredients = { - { "wood-science-pack", 1 }, - { "production-science-pack", 1 }, - { "space-science-pack", 1 }, - }, - time = 60 +local infinite = settings.startup["lignumis-infinite-astroponics-productivity-research"].value + +local base_levels = { + type = "technology", + name = "astroponics-productivity", + icons = { + { icon = "__base__/graphics/icons/wood.png", icon_size = 64 }, + { icon = "__astroponics__/graphics/icons/fluid/liquid-fertilizer.png", shift = { -32, -32 }, scale = 1.2 }, + { + icon = "__core__/graphics/icons/technology/constants/constant-recipe-productivity.png", + icon_size = 128, + scale = 0.5, + shift = { 50, 50 }, + floating = true } + }, + essential = false, + level = 1, + max_level = 5, + show_levels_info = true, + effects = { + { + type = "change-recipe-productivity", + recipe = "tree-astroponics", + change = 0.1 + } + }, + prerequisites = { "astroponics", "production-science-pack" }, + unit = { + count_formula = "L*250", + ingredients = { + { "wood-science-pack", 1 }, + { "production-science-pack", 1 }, + { "space-science-pack", 1 }, + }, + 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 diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index 16b0477..c5097b8 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -339,11 +339,29 @@ end -- Fix item weights -local function set_default_weight(item, items_per_rocket) - data.raw.item[item].weight = data.raw.item[item].weight or 1000 * kg / items_per_rocket +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) \ No newline at end of file +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) \ No newline at end of file diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index ad58805..75773e3 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -67,10 +67,6 @@ Init.events[defines.events.on_player_created] = function(event) 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 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 diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 2a8c02b..ddde9f0 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -90,6 +90,13 @@ data:extend({ default_value = false, order = "m" }, + { + type = "bool-setting", + name = "lignumis-infinite-astroponics-productivity-research", + setting_type = "startup", + default_value = false, + order = "n" + }, { type = "string-setting", name = "lignumis-second-planet",