This commit is contained in:
Simon Brodtmann 2025-01-02 14:07:18 +01:00
parent e7a311e26c
commit 186a561b1c
32 changed files with 256 additions and 27 deletions

View file

@ -1,6 +1,29 @@
# Lignumis # Lignumis
Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies. Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.
## Todo
- Move wood and lumber to its own fuel category
- Make rocket silo work (incl. transition to Nauvis)
- Make enemies work
- Balance pollution (noise)
- Tweak enemies + warfare (add damage research)
- Add vent for steam
- Add recipe to void gold seeds
- Adjust vanilla technologies
- Add end-game stuff
- Add burner radar
- Balance resources
- Force start with wooden ammo
- Add robots (simple robots inspired by https://mods.factorio.com/mod/copper-construction-robots; gold and copper variant)
- Make mod "Wooden logistics" optional
- Remove stromatolite (non-plant)?
- Guarantee spawn of gold in starting area
- Fix pipe graphics on desiccation furnace
- Change color of gold soil
- Ban huge rocks with coal from Nauvis
- Increase default moisture bias
## Credits ## Credits
Hurricane: Hurricane:

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View file

@ -24,6 +24,7 @@ gold-pipe-to-ground=Gold pipe to ground
gold-storage-tank=Gold storage tank gold-storage-tank=Gold storage tank
desiccation-furnace=Desiccation furnace desiccation-furnace=Desiccation furnace
steam-assembling-machine=Steam assembling machine steam-assembling-machine=Steam assembling machine
provisional-rocket-silo=Provisional rocket silo
[item-name] [item-name]
wooden-gear-wheel=Wooden gear wheel wooden-gear-wheel=Wooden gear wheel
@ -46,18 +47,21 @@ wood-pulp=Wood pulp
[recipe-name] [recipe-name]
moist-stromatolite-remnant-desiccation=Desiccate moist stromatolite remnant moist-stromatolite-remnant-desiccation=Desiccate moist stromatolite remnant
wood-liquefaction=Wood liquefaction wood-liquefaction=Wood liquefaction
provisional-rocket-part=Provisional rocket part
[technology-name] [technology-name]
wood-science-pack=Wood science pack wood-science-pack=Wood science pack
burner-automation=Burner automation burner-automation=Burner automation
planet-discovery-nauvis=Planet discovery Nauvis planet-discovery-nauvis=Planet discovery Nauvis
iron-processing=Iron processing iron-processing=Iron processing
copper-processing=Copper processing
lumber-mill=Lumber mill lumber-mill=Lumber mill
deep-miner=Deep miner deep-miner=Deep miner
gold-fluid-handling=Gold fluid handling gold-fluid-handling=Gold fluid handling
steam-automation=Steam automation steam-automation=Steam automation
steam-science-pack=Steam science pack steam-science-pack=Steam science pack
wood-liquefaction=Wood liquefaction wood-liquefaction=Wood liquefaction
provisional-rocketry=Provisional rocketry
[tile-name] [tile-name]
wood-floor=Wood floor wood-floor=Wood floor

View file

@ -17,6 +17,7 @@ agricultural_tower.energy_source = {
} }
agricultural_tower.resistances = nil agricultural_tower.resistances = nil
agricultural_tower.input_inventory_size = 1 agricultural_tower.input_inventory_size = 1
agricultural_tower.output_inventory_size = 4
agricultural_tower.radius = 2 agricultural_tower.radius = 2
local crane = agricultural_tower.crane local crane = agricultural_tower.crane

View file

@ -11,8 +11,8 @@ long_handed_inserter.hand_base_picture.filename = "__lignumis__/graphics/entity/
long_handed_inserter.hand_closed_picture.filename = "__lignumis__/graphics/entity/burner-long-handed-inserter-hand-closed.png" long_handed_inserter.hand_closed_picture.filename = "__lignumis__/graphics/entity/burner-long-handed-inserter-hand-closed.png"
long_handed_inserter.hand_open_picture.filename = "__lignumis__/graphics/entity/burner-long-handed-inserter-hand-open.png" long_handed_inserter.hand_open_picture.filename = "__lignumis__/graphics/entity/burner-long-handed-inserter-hand-open.png"
long_handed_inserter.platform_picture.sheet.filename = "__lignumis__/graphics/entity/burner-long-handed-inserter-platform.png" long_handed_inserter.platform_picture.sheet.filename = "__lignumis__/graphics/entity/burner-long-handed-inserter-platform.png"
long_handed_inserter.energy_per_movement = "100kJ" long_handed_inserter.energy_per_movement = "90kJ"
long_handed_inserter.energy_per_rotation = "100kJ" long_handed_inserter.energy_per_rotation = "90kJ"
long_handed_inserter.energy_source = { long_handed_inserter.energy_source = {
type = "burner", type = "burner",
fuel_categories = { "chemical" }, fuel_categories = { "chemical" },

View file

@ -14,5 +14,6 @@ require("desiccation-furnace")
require("steam-assembling-machine") require("steam-assembling-machine")
require("steam-science") require("steam-science")
require("wood-liquefaction") require("wood-liquefaction")
require("wooden-rocket-silo")
require("noise") require("noise")

View file

@ -9,10 +9,11 @@ stromatolite.autoplace = {
tile_restriction = { "natural-gold-soil" } tile_restriction = { "natural-gold-soil" }
} }
stromatolite.collision_mask = util.copy(data.raw["plant"]["tree-plant"].collision_mask) stromatolite.collision_mask = util.copy(data.raw["plant"]["tree-plant"].collision_mask)
stromatolite.mining_time = 2
stromatolite.minable.results = { stromatolite.minable.results = {
{ type = "item", name = "gold-ore", amount_min = 13, amount_max = 17 }, { type = "item", name = "gold-ore", amount_min = 1, amount_max = 7 },
{ type = "item", name = "gold-bacteria", amount_min = 23, amount_max = 37 }, { type = "item", name = "gold-bacteria", amount_min = 3, amount_max = 9 },
{ type = "item", name = "gold-stromatolite-seed", amount_min = 1, amount_max = 7, probability = 0.5 } { type = "item", name = "gold-stromatolite-seed", amount = 1, probability = 0.1 }
} }
stromatolite.map_color = { 255, 171, 0, 0.5 } stromatolite.map_color = { 255, 171, 0, 0.5 }
stromatolite.pictures = { stromatolite.pictures = {
@ -146,7 +147,7 @@ plant.minable = {
results = { results = {
{ type = "item", name = "moist-stromatolite-remnant", amount_min = 23, amount_max = 37 }, { type = "item", name = "moist-stromatolite-remnant", amount_min = 23, amount_max = 37 },
{ type = "item", name = "gold-bacteria", amount_min = 13, amount_max = 17 }, { type = "item", name = "gold-bacteria", amount_min = 13, amount_max = 17 },
{ type = "item", name = "gold-stromatolite-seed", amount_min = 1, amount_max = 3 } { type = "item", name = "gold-stromatolite-seed", amount_min = 1, amount_max = 2 }
} }
} }
plant.growth_ticks = 20 * minute plant.growth_ticks = 20 * minute

View file

@ -41,7 +41,7 @@ local tech = LumberMill.TechnologyBuilder:new()
:build() :build()
tech.unit = { tech.unit = {
count = 500, count = 250,
ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }, ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } },
time = 15 time = 15
} }

View file

@ -94,6 +94,8 @@ data:extend({
{ icon = "__lignumis__/graphics/icons/moist-stromatolite-remnant-1.png", scale = 0.25, shift = { -8, 8 } } { icon = "__lignumis__/graphics/icons/moist-stromatolite-remnant-1.png", scale = 0.25, shift = { -8, 8 } }
}, },
category = "desiccation", category = "desiccation",
subgroup = "raw-material",
order = "b[desiccation]",
energy_required = 9.6, energy_required = 9.6,
ingredients = { { type = "item", name = "moist-stromatolite-remnant", amount = 2 } }, ingredients = { { type = "item", name = "moist-stromatolite-remnant", amount = 2 } },
results = { results = {

View file

@ -25,8 +25,11 @@ assembling_machine.energy_source = {
production_type = "input", production_type = "input",
pipe_picture = assembler2pipepictures(), pipe_picture = assembler2pipepictures(),
pipe_covers = pipecoverspictures(), pipe_covers = pipecoverspictures(),
volume = 100, volume = 50,
pipe_connections = { { flow_direction = "input", direction = defines.direction.west, position = { -1, 0 } } }, pipe_connections = {
{ flow_direction = "input-output", direction = defines.direction.west, position = { -1, 0 } },
{ flow_direction = "input-output", direction = defines.direction.east, position = { 1, 0 } }
},
secondary_draw_orders = { north = -1 } secondary_draw_orders = { north = -1 }
} }
} }
@ -59,10 +62,8 @@ data:extend({
name = "steam-assembling-machine", name = "steam-assembling-machine",
enabled = false, enabled = false,
ingredients = { ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 5 }, { type = "item", name = "burner-assembling-machine", amount = 1 },
{ type = "item", name = "lumber", amount = 8 }, { type = "item", name = "gold-pipe", amount = 5 }
{ type = "item", name = "gold-cable", amount = 20 },
{ type = "item", name = "gold-pipe", amount = 2 }
}, },
results = { { type = "item", name = "steam-assembling-machine", amount = 1 } }, results = { { type = "item", name = "steam-assembling-machine", amount = 1 } },
energy_required = 8 energy_required = 8

View file

@ -6,7 +6,7 @@ data:extend({
name = "wood-lab", name = "wood-lab",
icon = "__lignumis__/graphics/icons/wood-lab.png", icon = "__lignumis__/graphics/icons/wood-lab.png",
flags = {"placeable-player", "player-creation"}, flags = {"placeable-player", "player-creation"},
minable = {mining_time = 0.2, result = "lab"}, minable = {mining_time = 0.2, result = "wood-lab"},
fast_replaceable_group = "lab", fast_replaceable_group = "lab",
max_health = 150, max_health = 150,
corpse = "lab-remnants", corpse = "lab-remnants",

View file

@ -47,7 +47,7 @@ data:extend({
icon_mipmaps = 4, icon_mipmaps = 4,
icons = { icons = {
{ icon = "__base__/graphics/technology/oil-processing.png", icon_size = 256 }, { icon = "__base__/graphics/technology/oil-processing.png", icon_size = 256 },
{ icon = "__lignumis__/graphics/icons/wood-pulp.png", icon_size = 64, scale = 0.5, shift = { 16, 16 } } { icon = "__lignumis__/graphics/icons/wood-pulp.png", icon_size = 64, scale = 1 }
}, },
effects = { effects = {
{ {

View file

@ -0,0 +1,147 @@
local item_sounds = require("__base__.prototypes.item_sounds")
local silo = util.copy(data.raw["rocket-silo"]["rocket-silo"])
silo.name = "provisional-rocket-silo"
silo.module_slots = 0
silo.allowed_effects = { "consumption", "pollution" }
silo.minable = { mining_time = 1, result = "provisional-rocket-silo" }
silo.max_health = 1000
silo.energy_source = {
type = "burner",
fuel_categories = { "chemical" },
effectivity = 1,
fuel_inventory_size = 1,
emissions_per_minute = { noise = 100 },
smoke = {
{
name = "smoke",
deviation = { 0.1, 0.1 },
frequency = 20,
position = { 2.0, -3.0 },
starting_vertical_speed = 0.08,
starting_frame_deviation = 60
}
}
}
silo.energy_usage = "1MW"
silo.rocket_entity = "provisional-rocket"
silo.fixed_recipe = "provisional-rocket-part"
silo.door_opening_speed = 1 / (20 * 60)
silo.base_day_sprite.filename = "__lignumis__/graphics/entity/wooden-rocket-silo/06-rocket-silo.png"
silo.base_front_sprite.filename = "__lignumis__/graphics/entity/wooden-rocket-silo/14-rocket-silo-front.png"
silo.fluid_boxes = {
{
volume = 50,
pipe_picture = assembler2pipepictures(),
pipe_covers = pipecoverspictures(),
pipe_connections = {
{ flow_direction = "input", direction = defines.direction.south, position = { -3.0, 4.0 } }
},
production_type = "input",
secondary_draw_orders = { south = 110 }
}
}
silo.launch_to_space_platforms = false
silo.rocket_parts_storage_cap = 50
local silo_item = util.copy(data.raw["item"]["rocket-silo"])
silo_item.name = "provisional-rocket-silo"
silo_item.order = "0[provisional-rocket-silo]"
silo_item.place_result = "provisional-rocket-silo"
silo_item.icon = "__lignumis__/graphics/icons/provisional-rocket-silo.png"
local silo_recipe = util.copy(data.raw["recipe"]["rocket-silo"])
silo_recipe.name = "provisional-rocket-silo"
silo_recipe.results[1].name = "provisional-rocket-silo"
silo_recipe.ingredients = {
{ type = "item", name = "lumber", amount = 500 },
{ type = "item", name = "wooden-gear-wheel", amount = 250 },
{ type = "item", name = "stone-brick", amount = 500 },
{ type = "item", name = "gold-plate", amount = 500 },
{ type = "item", name = "gold-cable", amount = 100 }
}
local rocket = util.copy(data.raw["rocket-silo-rocket"]["rocket-silo-rocket"])
rocket.name = "provisional-rocket"
rocket.rising_speed = 1 / (14 * 60)
rocket.engine_starting_speed = 1 / (11 * 60)
rocket.flying_speed = 1 / (4000 * 60)
rocket.flying_acceleration = 0.005
rocket.rocket_sprite.layers[1].filename = "__lignumis__/graphics/entity/wooden-rocket-silo/rocket-static-pod.png"
local rocket_part_recipe = {
type = "recipe",
name = "provisional-rocket-part",
icon = "__lignumis__/graphics/icons/provisional-rocket-part.png",
energy_required = 6,
enabled = false,
hide_from_player_crafting = true,
category = "rocket-building",
ingredients = {
{ type = "item", name = "lumber", amount = 5 },
{ type = "item", name = "wooden-gear-wheel", amount = 5 },
{ type = "item", name = "gold-plate", amount = 5 },
{ type = "item", name = "gold-cable", amount = 5 },
{ type = "fluid", name = "wood-pulp", amount = 5 }
},
results = { { type = "item", name = "rocket-part", amount = 1 } },
allow_productivity = true
}
local satellite_item = {
type = "item",
name = "satellite",
icon = "__base__/graphics/icons/satellite.png",
subgroup = "space-related",
order = "d[rocket-parts]-e[satellite]",
inventory_move_sound = item_sounds.mechanical_inventory_move,
pick_sound = item_sounds.mechanical_inventory_pickup,
drop_sound = item_sounds.mechanical_inventory_move,
stack_size = 1,
weight = 1 * tons,
rocket_launch_products = {{type = "item", name = "destination-nauvis", amount = 1}},
send_to_orbit_mode = "automated"
}
local satellite_recipe = {
type = "recipe",
name = "satellite",
energy_required = 5,
enabled = false,
category = "crafting",
ingredients =
{
{ type = "item", name = "low-density-structure", amount = 100 },
{ type = "item", name = "solar-panel", amount = 100 },
{ type = "item", name = "accumulator", amount = 100 },
{ type = "item", name = "radar", amount = 5 },
{ type = "item", name = "processing-unit", amount = 100 },
{ type = "item", name = "rocket-fuel", amount = 50 }
},
results = { { type = "item", name = "satellite", amount = 1 } },
requester_paste_multiplier = 1
}
local nauvis_item = {
type = "item",
name = "destination-nauvis",
icon = "__base__/graphics/icons/nauvis.png",
subgroup = "space-related",
order = "z[destination-nauvis]",
inventory_move_sound = item_sounds.mechanical_inventory_move,
pick_sound = item_sounds.mechanical_inventory_pickup,
drop_sound = item_sounds.mechanical_inventory_move,
stack_size = 1,
weight = 1 * tons
}
data:extend({
silo,
silo_item,
silo_recipe,
rocket,
rocket_part_recipe,
satellite_item,
satellite_recipe,
nauvis_item
})

View file

@ -75,14 +75,38 @@ data.raw.recipe["copper-cable"].enabled = false
-- Adjust vanilla technologies -- Adjust vanilla technologies
local automation_technology = data.raw.technology["automation-science-pack"]
automation_technology.prerequisites = { "planet-discovery-nauvis" }
automation_technology.research_trigger = nil
automation_technology.unit = {
count = 100,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 30
}
local electronics_technology = data.raw.technology["electronics"] local electronics_technology = data.raw.technology["electronics"]
electronics_technology.research_trigger = nil
electronics_technology.prerequisites = { "copper-processing" } electronics_technology.prerequisites = { "copper-processing" }
electronics_technology.research_trigger = nil
electronics_technology.unit = { electronics_technology.unit = {
count = 10, count = 10,
ingredients = { { "automation-science-pack", 1 } }, ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 10 time = 10
} }
local steam_power_technology = data.raw.technology["steam-power"] local steam_power_technology = data.raw.technology["steam-power"]
steam_power_technology.prerequisites = { "iron-processing" } steam_power_technology.prerequisites = { "iron-processing" }
steam_power_technology.research_trigger = nil
steam_power_technology.unit = {
count = 50,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 15
}

View file

@ -34,15 +34,14 @@ data:extend({
space_location = "nauvis", space_location = "nauvis",
use_icon_overlay_constant = true use_icon_overlay_constant = true
} }, } },
--prerequisites = { "space-platform-thruster" }, prerequisites = { "provisional-rocketry" },
prerequisites = { "wood-science-pack" },
unit = { unit = {
count = 10, count = 100,
ingredients = { ingredients = {
{ "automation-science-pack", 1 }, { "wood-science-pack", 1 },
{ "logistic-science-pack", 1 } { "steam-science-pack", 1 }
}, },
time = 10 time = 30
} }
}, },
{ {
@ -135,8 +134,7 @@ data:extend({
icon = "__lignumis__/graphics/technology/steam-science-pack.png", icon = "__lignumis__/graphics/technology/steam-science-pack.png",
icon_size = 256, icon_size = 256,
essential = true, essential = true,
effects = effects = {
{
{ {
type = "unlock-recipe", type = "unlock-recipe",
recipe = "steam-science-pack" recipe = "steam-science-pack"
@ -148,5 +146,32 @@ data:extend({
ingredients = { { "wood-science-pack", 1 } }, ingredients = { { "wood-science-pack", 1 } },
time = 15 time = 15
} }
},
{
type = "technology",
name = "provisional-rocketry",
icon = "__lignumis__/graphics/technology/provisional-rocketry.png",
icon_size = 256,
essential = true,
effects =
{
{
type = "unlock-recipe",
recipe = "provisional-rocket-silo"
},
{
type = "unlock-recipe",
recipe = "satellite"
}
},
prerequisites = { "wood-liquefaction" },
unit = {
count = 500,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 15
}
} }
}) })

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

Binary file not shown.

View file

@ -1,6 +1,6 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2"> <mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
<diagram name="Seite-1" id="Hjthvxz_Rz3L21c5tBGx"> <diagram name="Seite-1" id="Hjthvxz_Rz3L21c5tBGx">
<mxGraphModel dx="2415" dy="1195" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <mxGraphModel dx="2415" dy="1188" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root> <root>
<mxCell id="0" /> <mxCell id="0" />
<mxCell id="1" parent="0" /> <mxCell id="1" parent="0" />

Binary file not shown.