From 53699b9a9cc44da71a7d6759be5a8bc64e53ee5d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Feb 2025 16:19:22 +0100 Subject: [PATCH 001/150] Add new enemies --- README.md | 3 + .../icons/lignumis-medium-wriggler-corpse.png | Bin 0 -> 8850 bytes .../icons/lignumis-medium-wriggler.png | Bin 0 -> 9699 bytes .../icons/lignumis-small-wriggler-corpse.png | Bin 0 -> 7055 bytes .../icons/lignumis-small-wriggler.png | Bin 0 -> 7623 bytes lignumis/prototypes/content/data.lua | 1 + lignumis/prototypes/content/enemies.lua | 534 ++++++++++++++++++ .../icons/lignumis-medium-wriggler-corpse.png | Bin 0 -> 8850 bytes sources/icons/lignumis-medium-wriggler.png | Bin 0 -> 9699 bytes .../icons/lignumis-small-wriggler-corpse.png | Bin 0 -> 7055 bytes sources/icons/lignumis-small-wriggler.png | Bin 0 -> 7623 bytes 11 files changed, 538 insertions(+) create mode 100644 lignumis/graphics/icons/lignumis-medium-wriggler-corpse.png create mode 100644 lignumis/graphics/icons/lignumis-medium-wriggler.png create mode 100644 lignumis/graphics/icons/lignumis-small-wriggler-corpse.png create mode 100644 lignumis/graphics/icons/lignumis-small-wriggler.png create mode 100644 lignumis/prototypes/content/enemies.lua create mode 100644 sources/icons/lignumis-medium-wriggler-corpse.png create mode 100644 sources/icons/lignumis-medium-wriggler.png create mode 100644 sources/icons/lignumis-small-wriggler-corpse.png create mode 100644 sources/icons/lignumis-small-wriggler.png diff --git a/README.md b/README.md index e11d3e6..4a8ff35 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,9 @@ If your modded lab is special and it should not support these science packs, use - Add information in Factoriopedia - Compatibility with [On Wayward Seas](https://mods.factorio.com/mod/wayward-seas) - Compatibility with [Noble Metals](https://mods.factorio.com/mod/bzgold) once it's updated +- Check if creating a separate group for Lignumis recipes/items makes sense +- Only create 1 cutscene per game in multiplayer +- Think about moving Lumber mill to later and let it use electricity. ## Credits diff --git a/lignumis/graphics/icons/lignumis-medium-wriggler-corpse.png b/lignumis/graphics/icons/lignumis-medium-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..4d78edf05b6d12a11904e699f3a88c37e67048e4 GIT binary patch literal 8850 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 U%w4B_B>(^b07*qoM6N<$g1uyX$^ZZW literal 0 HcmV?d00001 diff --git a/lignumis/graphics/icons/lignumis-medium-wriggler.png b/lignumis/graphics/icons/lignumis-medium-wriggler.png new file mode 100644 index 0000000000000000000000000000000000000000..55fd48b0bbe767696b77eddbc7f356ccf016c9ed GIT binary patch literal 9699 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%0D2Cmi2M7qB*P;a*ip6cylarHfozla48lk6 zwu$g{7w+BKEZ$ueNeM!oN2J$f0<@_R3Xnulsakn`ixZ9y#*Hde*RLq4tqoQpo@~g9`~VD(_3xKP z&uUXZ>?5_sq2(Nx&8=Lj?`Q@+c6K#}M^>O_cRVf3c7eN}cIfZODU&}6+&CPKrA0*9 zpZk~}e11!S+n3kk`Hqc<$&C~cPc~$t@XKe98gzHmm_NQCM5cZyZ?!);G?0w3)A^GA zfo0fU5k(7goZ%Fy87?FE_eJhfxbX>{p8bw%YPW`s6t9cE@$B}(cw#1DYAyHC$3pBl z;<(}DrF4vrtrT~6XVd%YG9k)yfoHT<@b4q|=SwLW5*A13Wo3nPXVQ9@e7t#EStPr@ z-7=}~Tq-WTR7wquEu{~(r9)KUL|cW;_WI*gin4P!NO_g`@e;gkzeDK2$#jgLFQbng zTSM11#vv@n<_nX6x!P0ZRitFg1pzWl>9G)%`@9QBPcOyTaG9j*P!YYOG8z7hxqr8e z&{QJ`c};iPTX1!wpl0+$5eE9!i#rY!NLD=^PV<+UUX~Usq3>t` zwR5{rlCqo+-&NM-@`C*nV7(O$fv)X`qUj4mdGyHOQaV4IPe-ow`jGA=OvT#pA7)MB=_Co+K^935!-c?Uh^ald;xj44-g*<&(GK@$q$caq}jEUc6lY z3x{})vGg-?>z$U6iNuSGiP@KjR6hOqk|zE-#Jt~F!9?EEYTG6(TrPQ?u8^IxIM_MI z>Fv`>)a^ln9^FfzXgTp!SSs64ZoShSz(exhzZS3upYrjy^PF#o_7IXy&nS01?3a@} zT_HQ3|Hf*YPhaPM|HUmQy03~!byqV{`JATUVcuBoo~M2E+}G$O`s{kZxA$&_&<#Zd z)myD`;L4R;1^Ea)L4U${bJ!#A#@K?Z`Eg3w{PZ%md}N-WD4HatudTDj`-MN8Oe5b7 l_(Zzv%Cf{c@;P_v@NdKHU5-s+`GWue002ovPDHLkV1j%TBK80P literal 0 HcmV?d00001 diff --git a/lignumis/graphics/icons/lignumis-small-wriggler-corpse.png b/lignumis/graphics/icons/lignumis-small-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..532e60dedf236cabb43d69b401aa97260f582323 GIT binary patch literal 7055 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 literal 0 HcmV?d00001 diff --git a/lignumis/prototypes/content/data.lua b/lignumis/prototypes/content/data.lua index b884e38..2a4a1d5 100644 --- a/lignumis/prototypes/content/data.lua +++ b/lignumis/prototypes/content/data.lua @@ -30,5 +30,6 @@ require("quality-assembler") require("decoratives") require("wood-military") require("basic-circuit-boards") +require("enemies") require("noise") diff --git a/lignumis/prototypes/content/enemies.lua b/lignumis/prototypes/content/enemies.lua new file mode 100644 index 0000000..f2539b1 --- /dev/null +++ b/lignumis/prototypes/content/enemies.lua @@ -0,0 +1,534 @@ +local particle_animations = require("__space-age__/prototypes/particle-animations") +local base_sounds = require("__base__.prototypes.entity.sounds") +local space_age_sounds = require("__space-age__.prototypes.entity.sounds") +local simulations = require("__space-age__.prototypes.factoriopedia-simulations") +local enemy_autoplace = require("__base__.prototypes.entity.enemy-autoplace-utils") +local biter_ai_settings = require ("__base__.prototypes.entity.biter-ai-settings") + +local blood_particles = { + "blood-particle-small", +} + +for _, particle_name in ipairs(blood_particles) do + local new_particle = table.deepcopy(data.raw["optimized-particle"][particle_name]) + local scale = new_particle.pictures.sheet.scale + local shift = new_particle.pictures.sheet.shift + new_particle.name = "lignumis-" .. particle_name + new_particle.pictures = { + sheet = { + filename = "__space-age__/graphics/particle/gleba-blood-particle/gleba-blood-particle.png", + line_length = 12, + width = 32, + height = 24, + frame_count = 12, + variation_count = 7, + scale = scale * 0.25, + shift = shift + } + } + data:extend({ new_particle }) +end + +function gleba_hit_effects(offset_deviation, offset) + local offset = offset or { 0, 0 } + return { + type = "create-entity", + entity_name = "gleba-enemy-damaged-explosion", + offset_deviation = offset_deviation or { { -0.5, -0.5 }, { 0.5, 0.5 } }, + offsets = { offset }, + damage_type_filters = "fire" + } +end + +function wriggler_spritesheet(name, frames, speed, scale, tint, flag) + speed = speed or 1.0 + local is_shadow = string.sub(name, -string.len("-shadow")) == "-shadow" + local is_decay = string.find(name, "decay") + if is_decay and is_shadow then return nil end + return util.sprite_load("__space-age__/graphics/entity/wriggler/wriggler-" .. name, + { + slice = 5, + frame_count = frames, + direction_count = 16, + scale = 0.5 * 1.2 * scale, + multiply_shift = scale, + animation_speed = speed, + draw_as_shadow = is_shadow, + tint_as_overlay = tint and true or nil, + tint = tint, + flags = (not is_shadow) and { flag } or nil, + surface = "gleba", + usage = "enemy" + } + ) +end + +function wriggler_corpse_spritesheet(name, frames, speed, scale, tint) + return wriggler_spritesheet(name, frames, speed, scale, tint, "corpse-decay") +end + +local default_ended_in_water_trigger_effect = function() + return { + { + type = "create-particle", + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "tintable-water-particle", + apply_tile_tint = "secondary", + offset_deviation = { { -0.05, -0.05 }, { 0.05, 0.05 } }, + initial_height = 0, + initial_height_deviation = 0.02, + initial_vertical_speed = 0.05, + initial_vertical_speed_deviation = 0.05, + speed_from_center = 0.01, + speed_from_center_deviation = 0.006, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 2, + tail_length_deviation = 1, + tail_width = 3 + }, + { + type = "create-particle", + repeat_count = 10, + repeat_count_deviation = 6, + probability = 0.03, + affects_target = false, + show_in_tooltip = false, + particle_name = "tintable-water-particle", + apply_tile_tint = "primary", + offsets = { + { 0, 0 }, + { 0.01563, -0.09375 }, + { 0.0625, 0.09375 }, + { -0.1094, 0.0625 } + }, + offset_deviation = { { -0.2969, -0.1992 }, { 0.2969, 0.1992 } }, + initial_height = 0, + initial_height_deviation = 0.02, + initial_vertical_speed = 0.053, + initial_vertical_speed_deviation = 0.005, + speed_from_center = 0.02, + speed_from_center_deviation = 0.006, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 9, + tail_length_deviation = 0, + tail_width = 1 + }, + { + type = "play-sound", + sound = base_sounds.small_splash + } + } +end + +local make_particle = function(params) + if not params then error("No params given to make_particle function") end + local name = params.name or error("No name given") + + local ended_in_water_trigger_effect = params.ended_in_water_trigger_effect or default_ended_in_water_trigger_effect() + if params.ended_in_water_trigger_effect == false then + ended_in_water_trigger_effect = nil + end + + local particle = { + type = "optimized-particle", + name = name, + life_time = params.life_time or (60 * 15), + fade_away_duration = params.fade_away_duration, + render_layer = params.render_layer or "projectile", + render_layer_when_on_ground = params.render_layer_when_on_ground or "corpse", + regular_trigger_effect_frequency = params.regular_trigger_effect_frequency or 2, + regular_trigger_effect = params.regular_trigger_effect, + ended_in_water_trigger_effect = ended_in_water_trigger_effect, + pictures = params.pictures, + shadows = params.shadows, + draw_shadow_when_on_ground = params.draw_shadow_when_on_ground, + movement_modifier_when_on_ground = params.movement_modifier_when_on_ground, + movement_modifier = params.movement_modifier, + vertical_acceleration = params.vertical_acceleration, + mining_particle_frame_speed = params.mining_particle_frame_speed, + } + return particle +end + +local function lerp_color(a, b, amount) + return { + a[1] + amount * (b[1] - a[1]), + a[2] + amount * (b[2] - a[2]), + a[3] + amount * (b[3] - a[3]), + a[4] + amount * (b[4] - a[4]), + } +end + +function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simulation, factoriopedia_simulation_premature, + sounds) + -- Premature version loses health so that the swarm will get removed (more efficient). + -- Spawner-spawned versions are stable so that the area is not full of corpses. + local tint_mask = tints.mask + local tint_body = tints.body + + local function attack_parameters(lifesteal) + local cooldown = 26 + return { + ammo_category = "melee", + ammo_type = { + target_type = "entity", + action = { + type = "direct", + action_delivery = { + type = "instant", + source_effects = lifesteal and { + { + type = "damage", + damage = { amount = -health / 50 / 60 * cooldown * 1.1, type = "poison" } -- offsets negative regeneration when attacking + } + } or nil, + target_effects = { + { + type = "damage", + damage = { amount = 5 * damage, type = "physical" } + }, + { + type = "damage", + damage = { amount = 5 * damage, type = "poison" } + } + } + } + } + }, + animation = { + layers = { + wriggler_spritesheet("attack", 19, 0.48, scale, tint_body), + wriggler_spritesheet("attack-tint", 19, 0.48, scale, tint_mask), + wriggler_spritesheet("attack-shadow", 19, 0.48, scale), + } + }, + cooldown = cooldown, + cooldown_deviation = 0.1, + range = 1.8 * scale, + range_mode = "bounding-box-to-bounding-box", + sound = sounds.attack_sound, + type = "projectile" + } + end + + local wriggler = { + type = "unit", + name = prefix .. "wriggler-pentapod-premature", + icon = "__lignumis__/graphics/icons/" .. prefix .. "wriggler.png", + subgroup = "enemies", + order = "gleba-a-wriggler-" .. tostring(scale), + factoriopedia_simulation = factoriopedia_simulation_premature, + collision_box = { { -0.2 * scale, -0.2 * scale }, { 0.2 * scale, 0.2 * scale } }, + sticker_box = { { -0.5 * scale, -0.5 * scale }, { 0.5 * scale, 0.5 * scale } }, + selection_box = { { -0.9 * scale, -0.9 * scale }, { 0.9 * scale, 0.9 * scale } }, + collision_mask = { layers = { player = true, train = true, is_object = true }, not_colliding_with_itself = true }, + flags = { "placeable-player", "placeable-enemy", "placeable-off-grid", "not-repairable", "breaths-air" }, + absorptions_to_join_attack = { noise = 1 }, + ai_settings = biter_ai_settings, + attack_parameters = attack_parameters(true), + corpse = prefix .. "wriggler-pentapod-corpse", + damaged_trigger_effect = gleba_hit_effects(), + distance_per_frame = 0.125, + distraction_cooldown = 300, + dying_explosion = prefix .. "wriggler-die", + dying_sound = sounds.dying_sound, + healing_per_tick = -health / 50 / 60, + impact_category = "organic", + max_health = health, + max_pursue_distance = 50, + min_pursue_time = 600, + movement_speed = 0.2 * (1 + (scale - 1) / 2), + resistances = { + { + percent = 50, + type = "laser" + } + }, + run_animation = { + layers = { + wriggler_spritesheet("run", 21, 0.48, scale, tint_body), + wriggler_spritesheet("run-tint", 21, 0.48, scale, tint_mask), + wriggler_spritesheet("run-shadow", 21, 0.48, scale), + } + }, + running_sound_animation_positions = { 2 }, + vision_distance = 20, + water_reflection = { + orientation_to_variation = false, + rotate = true, + pictures = { + filename = "__base__/graphics/entity/biter/biter-reflection.png", + height = 28, + priority = "extra-high", + scale = 2.5 * scale, + shift = { 0.15625, 0.46875 }, + variation_count = 1, + width = 20 + } + }, + walking_sound = sounds.walking_sound, + working_sound = sounds.working_sound, + warcry = sounds.warcry, + } + + local wriggler_stable = table.deepcopy(wriggler) + wriggler_stable.name = prefix .. "wriggler-pentapod" + wriggler_stable.factoriopedia_simulation = factoriopedia_simulation + wriggler_stable.healing_per_tick = health / 500 / 60 + wriggler_stable.absorptions_to_join_attack = { noise = 1 } + wriggler_stable.attack_parameters = attack_parameters(false) + + local wriggler_corpse = { + type = "corpse", + name = prefix .. "wriggler-pentapod-corpse", + icon = "__lignumis__/graphics/icons/" .. prefix .. "wriggler-corpse.png", + subgroup = "corpses", + order = "c[corpse]-d[gleba-enemies-corpses]-d[wriggler]" .. tostring(scale), + hidden_in_factoriopedia = true, + selection_box = { { -0.8, -0.8 }, { 0.8, 0.8 } }, + selectable_in_game = false, + animation = { + layers = { + wriggler_corpse_spritesheet("death", 17, 0.48, scale, tint_body), + wriggler_corpse_spritesheet("death-tint", 17, 0.48, scale, tint_mask), + wriggler_corpse_spritesheet("death-shadow", 17, 0.48, scale), + } + }, + decay_animation = { + layers = { + wriggler_corpse_spritesheet("decay", 9, nil, scale, tint_body), + wriggler_corpse_spritesheet("decay-tint", 9, nil, scale, tint_mask), + wriggler_corpse_spritesheet("decay-shadow", 9, nil, scale), + } + }, + dying_speed = 0.015 / scale, + decay_frame_transition_duration = 150, + time_before_removed = 1 * 60 * 60, -- 1 minute + use_decay_layer = true, + + direction_shuffle = { { 1, 2, 3, 16 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }, + shuffle_directions_at_frame = 0, + final_render_layer = "lower-object-above-shadow", + flags = { + "placeable-neutral", + "placeable-off-grid", + "building-direction-8-way", + "not-repairable", + "not-on-map" + }, + ground_patch = { + sheet = + util.sprite_load("__space-age__/graphics/entity/wriggler/blood-puddle-var-main", + { + flags = { "low-object" }, + variation_count = 4, + scale = 0.4 * scale, + multiply_shift = 0.125, + } + ) + }, + ground_patch_fade_in_delay = 20, + ground_patch_fade_in_speed = 0.002, + ground_patch_fade_out_duration = 50 * 60 / 7.5, + ground_patch_fade_out_start = 50 * 60 / 7.5, + ground_patch_render_layer = "decals" + } + + local wrigger_explosion = { + type = "explosion", + name = prefix .. "wriggler-die", + scale = 0.25, + icon = "__space-age__/graphics/icons/medium-wriggler-corpse.png", + order = "a[corpse]-f[wriggler]", + flags = { "not-on-map" }, + hidden = true, + subgroup = "enemy-death-explosions", + animations = util.empty_sprite(), + created_effect = { + type = "direct", + action_delivery = { + type = "instant", + target_effects = { + { + type = "create-particle", + repeat_count = 13, + repeat_count_deviation = 1, + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "lignumis-blood-particle-small", + offsets = { { 0, 0 } }, + offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + initial_height = 0.1, + initial_height_deviation = 0.1, + initial_vertical_speed = 0.009, + initial_vertical_speed_deviation = 0.009, + speed_from_center = 0.05, + speed_from_center_deviation = 0.05, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 5, + tail_length_deviation = 5, + tail_width = 3, + rotate_offsets = false + }, + { + type = "create-particle", + repeat_count = 12, + repeat_count_deviation = 3, + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "lignumis-blood-particle-small", + offsets = { + { 0, -0.4 }, + { 0, 0.5 }, + { 0, 0.6 } + }, + offset_deviation = { { -0.25, -0.25 }, { 0.25, 0.25 } }, + initial_height = 0.1, + initial_height_deviation = 0.1, + initial_vertical_speed = 0.055, + initial_vertical_speed_deviation = 0.075, + speed_from_center = 0.03, + speed_from_center_deviation = 0.03, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 52, + tail_length_deviation = 25, + tail_width = 3, + rotate_offsets = false + }, + --{ + -- type = "create-particle", + -- repeat_count = 2, + -- repeat_count_deviation = 0, + -- probability = 1, + -- affects_target = false, + -- show_in_tooltip = false, + -- particle_name = "pentapod-entrails-particle-small", + -- offsets = { + -- { 0, -0.4 } + -- }, + -- offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + -- initial_height = 0.1, + -- initial_height_deviation = 0.1, + -- initial_vertical_speed = 0.06, + -- initial_vertical_speed_deviation = 0.05, + -- speed_from_center = 0.07, + -- speed_from_center_deviation = 0, + -- frame_speed = 1, + -- frame_speed_deviation = 0, + -- rotate_offsets = false + --}, + --{ + -- type = "create-particle", + -- repeat_count = 10, + -- repeat_count_deviation = 0, + -- probability = 1, + -- affects_target = false, + -- show_in_tooltip = false, + -- particle_name = prefix .. "wriggler-skin-particle", + -- offsets = { + -- { 0, -0.4 } + -- }, + -- offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + -- initial_height = 0.1, + -- initial_height_deviation = 0.1, + -- initial_vertical_speed = 0.05, + -- initial_vertical_speed_deviation = 0.02, + -- speed_from_center = 0.02, + -- speed_from_center_deviation = 0.1, + -- frame_speed = 1, + -- frame_speed_deviation = 0, + -- rotate_offsets = false + --}, + { + type = "play-sound", + sound = base_sounds.medium_gore + }, + } + } + } + } + + data:extend { + --wriggler, + wriggler_stable, + wriggler_corpse, + wrigger_explosion, + make_particle + { + name = prefix .. "wriggler-skin-particle", + life_time = 300, + pictures = particle_animations.get_pentpod_skin_particles_small({ scale = 1 * scale, tint = lerp_color(tint_mask, { 255, 255, 255, 255 }, 0.7) }), + shadows = particle_animations.get_pentpod_skin_particles_small({ scale = 1 * scale, tint = shadowtint(), shift = util.by_pixel(1, 0) }), + ended_in_water_trigger_effect = default_ended_in_water_trigger_effect(), + render_layer_when_on_ground = "lower-object-above-shadow" + }, + } +end + +local function fade(tint, amount) -- fades to minimal opacity grey. Low opacity is good for the mask to let the base layer show htough (instead of having a grey mask) + return lerp_color(tint, { 1, 1, 1, 2 }, amount) +end + +local function grey_overlay(tint, amount) -- fades to opaque grey. Full opacity is required for body. + return lerp_color(tint, { 127, 127, 127, 255 }, amount) +end + +-- mask tint is vibrant and only on the mask +-- body tint applies to the whole body and should be near 127 grey, just adds a hint of saturation +local gleba_small_mask_tint = { 103, 151, 11, 255 } +local gleba_small_body_tint = { 125, 124, 111, 255 } + +make_wriggler("lignumis-small-", 0.2, 20, 0.1, + { + mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.2), 0.2), + body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.2), 0.2) + }, + simulations.factoriopedia_gleba_enemy_small_wriggler, + simulations.factoriopedia_gleba_enemy_small_wriggler_premature, + space_age_sounds.wriggler_pentapod.small +) + +make_wriggler("lignumis-medium-", 0.4, 40, 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) + }, + simulations.factoriopedia_gleba_enemy_small_wriggler, + simulations.factoriopedia_gleba_enemy_small_wriggler_premature, + space_age_sounds.wriggler_pentapod.small +) + +local spawner = table.deepcopy(data.raw["unit-spawner"]["gleba-spawner-small"]) +table.assign(spawner, { + name = "lignumis-spawner-small", + result_units = { + { "lignumis-small-wriggler-pentapod", { { 0.0, 0.9 }, { 0.5, 0.9 }, { 0.6, 0.5 } } }, + { "lignumis-medium-wriggler-pentapod", { { 0.1, 0 }, { 0.4, 0 }, { 1, 0.9 } } } + }, + max_count_of_owned_units = 7, + max_friends_around_to_spawn = 5, + spawning_cooldown = { 360, 150 }, + spawning_radius = 10, + spawning_spacing = 3, + max_spawn_shift = 0, + max_richness_for_spawn_shift = 100, + call_for_help_radius = 50, + --spawning_cooldown = { 60, 20 }, + --spawning_radius = 4, + --call_for_help_radius = 20, + autoplace = enemy_autoplace.enemy_spawner_autoplace("enemy_autoplace_base(0, 6)"), + absorptions_per_second = { noise = { absolute = 20, proportional = 0.01 } }, +}) +spawner.collision_mask = nil +spawner.loot = nil +spawner.dying_trigger_effect[1].entity_name = "lignumis-small-wriggler-pentapod" + +data:extend({ spawner }) diff --git a/sources/icons/lignumis-medium-wriggler-corpse.png b/sources/icons/lignumis-medium-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..4d78edf05b6d12a11904e699f3a88c37e67048e4 GIT binary patch literal 8850 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 U%w4B_B>(^b07*qoM6N<$g1uyX$^ZZW literal 0 HcmV?d00001 diff --git a/sources/icons/lignumis-medium-wriggler.png b/sources/icons/lignumis-medium-wriggler.png new file mode 100644 index 0000000000000000000000000000000000000000..55fd48b0bbe767696b77eddbc7f356ccf016c9ed GIT binary patch literal 9699 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%0D2Cmi2M7qB*P;a*ip6cylarHfozla48lk6 zwu$g{7w+BKEZ$ueNeM!oN2J$f0<@_R3Xnulsakn`ixZ9y#*Hde*RLq4tqoQpo@~g9`~VD(_3xKP z&uUXZ>?5_sq2(Nx&8=Lj?`Q@+c6K#}M^>O_cRVf3c7eN}cIfZODU&}6+&CPKrA0*9 zpZk~}e11!S+n3kk`Hqc<$&C~cPc~$t@XKe98gzHmm_NQCM5cZyZ?!);G?0w3)A^GA zfo0fU5k(7goZ%Fy87?FE_eJhfxbX>{p8bw%YPW`s6t9cE@$B}(cw#1DYAyHC$3pBl z;<(}DrF4vrtrT~6XVd%YG9k)yfoHT<@b4q|=SwLW5*A13Wo3nPXVQ9@e7t#EStPr@ z-7=}~Tq-WTR7wquEu{~(r9)KUL|cW;_WI*gin4P!NO_g`@e;gkzeDK2$#jgLFQbng zTSM11#vv@n<_nX6x!P0ZRitFg1pzWl>9G)%`@9QBPcOyTaG9j*P!YYOG8z7hxqr8e z&{QJ`c};iPTX1!wpl0+$5eE9!i#rY!NLD=^PV<+UUX~Usq3>t` zwR5{rlCqo+-&NM-@`C*nV7(O$fv)X`qUj4mdGyHOQaV4IPe-ow`jGA=OvT#pA7)MB=_Co+K^935!-c?Uh^ald;xj44-g*<&(GK@$q$caq}jEUc6lY z3x{})vGg-?>z$U6iNuSGiP@KjR6hOqk|zE-#Jt~F!9?EEYTG6(TrPQ?u8^IxIM_MI z>Fv`>)a^ln9^FfzXgTp!SSs64ZoShSz(exhzZS3upYrjy^PF#o_7IXy&nS01?3a@} zT_HQ3|Hf*YPhaPM|HUmQy03~!byqV{`JATUVcuBoo~M2E+}G$O`s{kZxA$&_&<#Zd z)myD`;L4R;1^Ea)L4U${bJ!#A#@K?Z`Eg3w{PZ%md}N-WD4HatudTDj`-MN8Oe5b7 l_(Zzv%Cf{c@;P_v@NdKHU5-s+`GWue002ovPDHLkV1j%TBK80P literal 0 HcmV?d00001 diff --git a/sources/icons/lignumis-small-wriggler-corpse.png b/sources/icons/lignumis-small-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..532e60dedf236cabb43d69b401aa97260f582323 GIT binary patch literal 7055 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 literal 0 HcmV?d00001 From db9dd1c252336daf3642a15ac26505712284f7fc Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 2 Mar 2025 23:13:06 +0100 Subject: [PATCH 002/150] Add compatibility for "Lane splitters" --- lignumis/info.json | 1 + lignumis/locale/en/strings.cfg | 1 + lignumis/prototypes/compatibility/data.lua | 3 +- .../compatibility/lane-splitters.lua | 32 +++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 lignumis/prototypes/compatibility/lane-splitters.lua diff --git a/lignumis/info.json b/lignumis/info.json index 8e2e907..c14c208 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -28,6 +28,7 @@ "?Diversitree", "?aai-loaders", "?atan-nuclear-science", + "?lane-splitters", "!apm_power_ldinc", "!wood-logistics", "!early-agriculture", diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index aec044b..07ced59 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -45,6 +45,7 @@ basic-radar=Basic radar active-noise-cancelling-tower=Active noise cancelling tower quality-assembler=Quality assembler aai-wood-loader=Wood loader +wood-lane-splitter=Wood lane splitter [entity-description] lumber-mill=Advanced machine to process wood. diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index f664573..08074f9 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -4,4 +4,5 @@ require("metal-and-stars") require("alien-biomes") require("planet-picker") require("aai-loaders") -require("nuclear-science") \ No newline at end of file +require("nuclear-science") +require("lane-splitters") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/lane-splitters.lua b/lignumis/prototypes/compatibility/lane-splitters.lua new file mode 100644 index 0000000..2f1fc0e --- /dev/null +++ b/lignumis/prototypes/compatibility/lane-splitters.lua @@ -0,0 +1,32 @@ +if not mods["lane-splitters"] then return end + +local lane_splitter = make_tier({ + name = "wood-lane-splitter", + base_belt = "wood-transport-belt", + base_splitter = "wood-splitter", + health = 150, + next_upgrade = "lane-splitter", +}) + +lane_splitter.prototype.icon = Lignumis.graphics .. "icons/wood-lane-splitter.png" +lane_splitter.prototype.dying_explosion = "transport-belt-explosion" +lane_splitter.prototype.structure.east.filename = data.raw.splitter["wood-splitter"].structure.east.filename +lane_splitter.prototype.structure.south.filename = data.raw.splitter["wood-splitter"].structure.south.filename +lane_splitter.prototype.structure.west.filename = data.raw.splitter["wood-splitter"].structure.west.filename +lane_splitter.prototype.structure.north.filename = data.raw.splitter["wood-splitter"].structure.north.filename +lane_splitter.prototype.structure_patch.east.filename = data.raw.splitter["wood-splitter"].structure_patch.east.filename +lane_splitter.prototype.structure_patch.south.filename = data.raw.splitter["wood-splitter"].structure_patch.south.filename +lane_splitter.prototype.structure_patch.west.filename = data.raw.splitter["wood-splitter"].structure_patch.west.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" + +data:extend({ + lane_splitter.prototype, + lane_splitter.item, + lane_splitter.recipe, +}) + +table.insert(data.raw["technology"]["wood-logistics"].effects, { + type = "unlock-recipe", + recipe = "wood-lane-splitter" +}) \ No newline at end of file From 0fb21cf2ea651a6d6387c226c7b3a24e48b905ce Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 2 Mar 2025 23:44:01 +0100 Subject: [PATCH 003/150] AAI Industry: Fix basic circuit board recipe unlock --- lignumis/prototypes/compatibility/aai-industry.lua | 4 ++++ .../{basic-circuit-boards.lua => basic-circuit-board.lua} | 0 lignumis/prototypes/content/data.lua | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) rename lignumis/prototypes/content/{basic-circuit-boards.lua => basic-circuit-board.lua} (100%) diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index 83e9047..00ec466 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -29,4 +29,8 @@ if settings.startup["lignumis-basic-circuit-board"].value then table.insert(data.raw["recipe"]["inserter"].ingredients, { type = "item", name = "basic-circuit-board", amount = 1 }) table.insert(data.raw["recipe"]["burner-lab"].ingredients, { type = "item", name = "basic-circuit-board", amount = 10 }) table.insert(data.raw["recipe"]["assembling-machine-1"].ingredients, { type = "item", name = "basic-circuit-board", amount = 5 }) + + -- AAI Industry messes with the basic circuit board recipe + Technology:new("electronics"):removeRecipe("basic-circuit-board") + data.raw.recipe["basic-circuit-board"].enabled = true end \ No newline at end of file diff --git a/lignumis/prototypes/content/basic-circuit-boards.lua b/lignumis/prototypes/content/basic-circuit-board.lua similarity index 100% rename from lignumis/prototypes/content/basic-circuit-boards.lua rename to lignumis/prototypes/content/basic-circuit-board.lua diff --git a/lignumis/prototypes/content/data.lua b/lignumis/prototypes/content/data.lua index b884e38..1b232af 100644 --- a/lignumis/prototypes/content/data.lua +++ b/lignumis/prototypes/content/data.lua @@ -29,6 +29,6 @@ require("active-noise-cancelling-tower") require("quality-assembler") require("decoratives") require("wood-military") -require("basic-circuit-boards") +require("basic-circuit-board") require("noise") From 67055378c842732a1523042f2d8ada26043b787a Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 2 Mar 2025 23:49:55 +0100 Subject: [PATCH 004/150] 1.0.27 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index ccbe2c2..df8ce38 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.27 +Date: 02.03.2025 + Changes: + - Add compatibility for "Any planet start" + - Add compatibility for "Lane splitters" + Bug Fixes: + - AAI Industry: Fix basic circuit board recipe unlock +--------------------------------------------------------------------------------------------------- Version: 1.0.26 Date: 28.02.2025 Bug Fixes: diff --git a/lignumis/info.json b/lignumis/info.json index c14c208..441e649 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.26", + "version": "1.0.27", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 1b117be9c61f9011f4e7eac9bf3b0828a7085bc5 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 3 Mar 2025 18:40:55 +0100 Subject: [PATCH 005/150] AAI Loaders: Add missing translation --- lignumis/locale/en/strings.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 07ced59..c152c6e 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -129,6 +129,7 @@ basic-repair-pack=Basic repair pack basic-radar=Basic radar active-noise-cancelling=Active noise cancelling quality-assembler=Quality assembler +aai-wood-loader=Wood loader [technology-description] wood-science-pack=Allows research of basic technologies based on wood products. From 8e1c774e2a8d015a9ac16d608e0b1b9d0808d0f3 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 3 Mar 2025 18:41:20 +0100 Subject: [PATCH 006/150] Steam assembler technology should not ignore tech cost multiplier --- lignumis/prototypes/content/steam-assembling-machine.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/steam-assembling-machine.lua b/lignumis/prototypes/content/steam-assembling-machine.lua index f1db17e..208a99a 100644 --- a/lignumis/prototypes/content/steam-assembling-machine.lua +++ b/lignumis/prototypes/content/steam-assembling-machine.lua @@ -106,6 +106,6 @@ data:extend({ ingredients = { { "wood-science-pack", 1 } }, time = 15 }, - ignore_tech_cost_multiplier = true + ignore_tech_cost_multiplier = false } }) From f91f364c8d539b2de8e3db064b246c579f944b1d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 4 Mar 2025 09:56:59 +0100 Subject: [PATCH 007/150] Prevent possible errors on player initialization --- lignumis/scripts/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index 0a5715f..dd37c07 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -22,10 +22,10 @@ end -- Teleport to Lignumis and give some starting items local function init_player(event) local player = game.get_player(event.player_index) - - if not player.character then return end - local surface = storage.surface or game.planets["lignumis"].surface + + if not player.character or not surface then return end + player.teleport(surface.find_non_colliding_position("character", { 0, 0 }, 0, 1), "lignumis") player.character.destructible = false local main_inventory = player.character.get_main_inventory() From 0bfda7246f8cbf4122f7e2faa6d7c3c4dbee8cbb Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 4 Mar 2025 10:17:22 +0100 Subject: [PATCH 008/150] 1.0.28 --- README.md | 1 + lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e11d3e6..d35747a 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ The following planet mods are tested for (at least technical) compatibility: ## Problematic / incompatible mods * Mods that let you start on a different planet: They are supported, but you are missing half of the content of this mod. +* 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. diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index df8ce38..935f463 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.28 +Date: 04.03.2025 + Changes: + - Steam assembler technology should not ignore tech cost multiplier + Bug Fixes: + - AAI Loaders: Add missing translation + - Prevent possible errors on player initialization +--------------------------------------------------------------------------------------------------- Version: 1.0.27 Date: 02.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 441e649..813129d 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.27", + "version": "1.0.28", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 3b26f3a754bfcebedbbcbaad1fa3496c7398c50e Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 4 Mar 2025 20:46:14 +0100 Subject: [PATCH 009/150] readme --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d35747a..a6ac433 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ If your modded lab is special and it should not support these science packs, use - Simplified chinese (zh-CN): cyx2015s - Polish (pl): StarGazer -### Assets +### Assets / Code [Hurricane](https://mods.factorio.com/user/Hurricane046) @@ -184,4 +184,9 @@ If your modded lab is special and it should not support these science packs, use [Pixabay](https://pixabay.com) -- [AudioPapkin: Forest ambience](https://pixabay.com/sound-effects/forest-ambience-296528/) \ No newline at end of file +- [AudioPapkin: Forest ambience](https://pixabay.com/sound-effects/forest-ambience-296528/) + +[SafTheLamb](https://mods.factorio.com/user/SafTheLamb) + +- [Early Agriculture](https://mods.factorio.com/mod/early-agriculture): Fix for trees not being plantable on Nauvis with Alien Biomes active. +- [Wooden Logistics](https://mods.factorio.com/mod/wood-logistics): Code for AAI Loader. \ No newline at end of file From da50f85b5b3c8b8e0dbeb97646f2e1192ec18c5f Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 4 Mar 2025 20:46:42 +0100 Subject: [PATCH 010/150] Set default for setting "Basic circuit boards" to true --- lignumis/settings.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 71cd595..744094c 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -31,7 +31,7 @@ data:extend({ type = "bool-setting", name = "lignumis-basic-circuit-board", setting_type = "startup", - default_value = false, + default_value = true, order = "e" }, { From e1c40fcd33f717b471888e01c879c7d0cc79a3f6 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 4 Mar 2025 21:28:24 +0100 Subject: [PATCH 011/150] Nerf quality assembler to +25% quality --- lignumis/prototypes/content/quality-assembler.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/quality-assembler.lua b/lignumis/prototypes/content/quality-assembler.lua index 2b45880..480868c 100644 --- a/lignumis/prototypes/content/quality-assembler.lua +++ b/lignumis/prototypes/content/quality-assembler.lua @@ -77,7 +77,7 @@ QualityAssembler.EntityBuilder:new() crafting_speed = 4, module_slots = 6, allowed_effects = { "pollution", "quality" }, - effect_receiver = { base_effect = { quality = 10 } } + effect_receiver = { base_effect = { quality = 2.5 } } }) QualityAssembler.ItemBuilder:new():apply() From c334459db2dea2c2b4ba16533298e0af6a247751 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 4 Mar 2025 21:31:06 +0100 Subject: [PATCH 012/150] readme --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index a6ac433..6de46ea 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ This mod extends the early game of Space Age by putting you on the moon "Lignumi The duration of the stay on Lignumis will be rather short. The impact of the later game will still be substantial (once implemented). -**If you start a new game, check out the setting for adding Basic circuit boards.** - ## Mod recommendations The following mods can be a great addition for this mod: From c481394e55cf66831ad613c447ed61269b9aae6c Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 4 Mar 2025 23:50:10 +0100 Subject: [PATCH 013/150] Alien Biomes: Add warning --- lignumis/scripts/init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index dd37c07..2b0ceba 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -80,6 +80,11 @@ Init.events[defines.events.on_player_created] = function(event) if storage.init[event.player_index] then return end 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 + init_player(event) init_freeplay(event) end From ad56704b528b7a9440e01df75a9c69d105f25514 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 5 Mar 2025 09:46:39 +0100 Subject: [PATCH 014/150] Fix Burner agricultural tower not having a Nauvis recipe --- .../content/burner-agricultural-tower.lua | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index 3233527..fc180c8 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -109,30 +109,30 @@ tech.ignore_tech_cost_multiplier = true data.raw.technology["fish-breeding"].prerequisites = { "agricultural-science-pack" } -if not basic_circuit_board then - data:extend({ - { - type = "recipe", - name = "burner-agricultural-tower-electronic-circuit", - localised_name = { "entity-name.burner-agricultural-tower" }, - icons = { - { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" }, - { icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } } - }, - energy_required = 10, - ingredients = { - { type = "item", name = "stone-brick", amount = 5 }, - { type = "item", name = "wooden-gear-wheel", amount = 20 }, - { type = "item", name = "lumber", amount = 20 }, - { type = "item", name = "electronic-circuit", amount = 10 } - }, - results = { { type = "item", name = "burner-agricultural-tower", amount = 1 } }, - enabled = false - } - }) +data:extend({ + { + type = "recipe", + name = "burner-agricultural-tower-copper", + localised_name = { "entity-name.burner-agricultural-tower" }, + icons = { + { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" }, + { icon = "__base__/graphics/icons/copper-plate.png", scale = 0.25, shift = { 8, 8 } } + }, + energy_required = 10, + ingredients = { + { type = "item", name = "stone-brick", amount = 5 }, + { type = "item", name = "wooden-gear-wheel", amount = 20 }, + { type = "item", name = "lumber", amount = 20 }, + { type = "item", name = "copper-plate", amount = 10 }, + { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 } + }, + results = { { type = "item", name = "burner-agricultural-tower", amount = 1 } }, + enabled = false + } +}) + +table.insert(data.raw.technology["copper-processing"].effects, { + type = "unlock-recipe", + recipe = "burner-agricultural-tower-copper" +}) - table.insert(data.raw.technology["electronics"].effects, { - type = "unlock-recipe", - recipe = "burner-agricultural-tower-electronic-circuit" - }) -end From d41cc3c8224327f6f6e65f2934e2b9bd8c83c6a9 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 5 Mar 2025 09:49:28 +0100 Subject: [PATCH 015/150] 1.0.29 --- lignumis/changelog.txt | 10 ++++++++++ lignumis/info.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 935f463..4650fb3 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,14 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.29 +Date: 05.03.2025 + Breaking Changes: + - Nerf quality assembler to +25% quality + Changes: + - Set default for setting "Basic circuit boards" to true + - Alien Biomes: Add warning when the game starts that AB is not supported + Bug Fixes: + - Fix Burner agricultural tower not having a Nauvis recipe when "Basic circuit boards" is active +--------------------------------------------------------------------------------------------------- Version: 1.0.28 Date: 04.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 813129d..fb8a8cc 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.28", + "version": "1.0.29", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 4ed26b5b9d98295306be544c8cef241e4ee98cdb Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 6 Mar 2025 22:45:51 +0100 Subject: [PATCH 016/150] Any planet start: Fix startup crash --- lignumis/prototypes/compatibility/aai-industry.lua | 4 +++- lignumis/prototypes/content/basic-circuit-board.lua | 6 +++++- .../prototypes/content/burner-agricultural-tower.lua | 11 ++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index 00ec466..14174bd 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -5,10 +5,12 @@ if not mods["aai-industry"] then return end data.raw.recipe["wood-science-pack"].allow_hand_crafting = true local burner_mechanics = Technology:new("burner-mechanics") -burner_mechanics:addPrerequisite("iron-processing") burner_mechanics:removeRecipe("burner-inserter") burner_mechanics:removeRecipe("burner-mining-drill") burner_mechanics:removeRecipe("burner-assembling-machine") +if not mods["planet-picker"] and not mods["any-planet-start"] then + burner_mechanics:addPrerequisite("iron-processing") +end data.raw.recipe["burner-inserter"].enabled = true data.raw.recipe["burner-mining-drill"].enabled = true diff --git a/lignumis/prototypes/content/basic-circuit-board.lua b/lignumis/prototypes/content/basic-circuit-board.lua index 7c12dcc..79e0312 100644 --- a/lignumis/prototypes/content/basic-circuit-board.lua +++ b/lignumis/prototypes/content/basic-circuit-board.lua @@ -51,7 +51,11 @@ data:extend({ } }) -Technology:new("copper-processing"):addRecipe("basic-circuit-board-copper") +if not mods["planet-picker"] and not mods["any-planet-start"] then + Technology:new("copper-processing"):addRecipe("basic-circuit-board-copper") +else + Technology:new("electronics"):addRecipe("basic-circuit-board-copper") +end if settings.startup["lignumis-circuit-progression"].value then table.insert(data.raw.recipe["electronic-circuit"].ingredients, { type = "item", name = "basic-circuit-board", amount = 1 }) diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index fc180c8..d81c83e 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -1,4 +1,5 @@ local item_sounds = require("__base__.prototypes.item_sounds") +local Technology = require("__cf-lib__/data/Technology") local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value local gfx = Lignumis.graphics .. "entity/burner-agricultural-tower/" @@ -131,8 +132,8 @@ data:extend({ } }) -table.insert(data.raw.technology["copper-processing"].effects, { - type = "unlock-recipe", - recipe = "burner-agricultural-tower-copper" -}) - +if not mods["planet-picker"] and not mods["any-planet-start"] then + Technology:new("copper-processing"):addRecipe("burner-agricultural-tower-copper") +else + Technology:new("electronics"):addRecipe("burner-agricultural-tower-copper") +end From b2ac4793c6dfd7cde62115b7e81cbc9db3eed636 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 6 Mar 2025 22:49:06 +0100 Subject: [PATCH 017/150] 1.0.30 --- lignumis/changelog.txt | 5 +++++ lignumis/info.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 4650fb3..bf13d97 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.30 +Date: 06.03.2025 + Bug Fixes: + - Any planet start: Fix startup crash +--------------------------------------------------------------------------------------------------- Version: 1.0.29 Date: 05.03.2025 Breaking Changes: diff --git a/lignumis/info.json b/lignumis/info.json index fb8a8cc..03dd3b6 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.29", + "version": "1.0.30", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 9a89515b81251004bb5fc838c68a32f801704db0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 12 Mar 2025 20:09:22 +0100 Subject: [PATCH 018/150] Add missing translation --- lignumis/locale/en/strings.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index c152c6e..3a28692 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -100,6 +100,7 @@ low-density-structure-gold=Low density structure rocket-fuel-from-wood-pulp-and-peat=Bio-rocket-fuel nutrients-from-wood-pulp=Nutrients from wood pulp active-noise-cancelling=Active noise cancelling +casting-gold=Casting gold [recipe-description] moist-stromatolite-remnant-desiccation-without-steam=Used for balancing the production of steam. From c7885afe346ee5c910c06bff034336153c9215ee Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 12 Mar 2025 20:16:43 +0100 Subject: [PATCH 019/150] Mark Any planet start and Planet picker as incompatible --- lignumis/info.json | 3 +- .../prototypes/compatibility/aai-industry.lua | 4 +- lignumis/prototypes/compatibility/data.lua | 1 - .../compatibility/planet-picker.lua | 7 - .../content/basic-circuit-board.lua | 6 +- .../content/burner-agricultural-tower.lua | 6 +- lignumis/prototypes/content/technology.lua | 148 ++++++----- lignumis/prototypes/integrations/vanilla.lua | 248 +++++++++--------- lignumis/scripts/init-existing.lua | 4 +- lignumis/scripts/init-new.lua | 1 - lignumis/scripts/init.lua | 1 - lignumis/settings.lua | 9 - 12 files changed, 202 insertions(+), 236 deletions(-) delete mode 100644 lignumis/prototypes/compatibility/planet-picker.lua diff --git a/lignumis/info.json b/lignumis/info.json index 03dd3b6..e86051b 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -24,11 +24,12 @@ "?wood-military >= 2.3.3", "?metal-and-stars", "?aai-industry", - "?planet-picker", "?Diversitree", "?aai-loaders", "?atan-nuclear-science", "?lane-splitters", + "!planet-picker", + "!any-planet-start", "!apm_power_ldinc", "!wood-logistics", "!early-agriculture", diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index 14174bd..b4f27f3 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -8,9 +8,7 @@ local burner_mechanics = Technology:new("burner-mechanics") burner_mechanics:removeRecipe("burner-inserter") burner_mechanics:removeRecipe("burner-mining-drill") burner_mechanics:removeRecipe("burner-assembling-machine") -if not mods["planet-picker"] and not mods["any-planet-start"] then - burner_mechanics:addPrerequisite("iron-processing") -end +burner_mechanics:addPrerequisite("iron-processing") data.raw.recipe["burner-inserter"].enabled = true data.raw.recipe["burner-mining-drill"].enabled = true diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index 08074f9..893c11f 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -2,7 +2,6 @@ require("hot-metals") require("wood-military") require("metal-and-stars") require("alien-biomes") -require("planet-picker") require("aai-loaders") require("nuclear-science") require("lane-splitters") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/planet-picker.lua b/lignumis/prototypes/compatibility/planet-picker.lua deleted file mode 100644 index 170924a..0000000 --- a/lignumis/prototypes/compatibility/planet-picker.lua +++ /dev/null @@ -1,7 +0,0 @@ -local Technology = require("__cf-lib__/data/Technology") - -if not mods["planet-picker"] and not mods["any-planet-start"] then return end - -local technology = Technology:new("planet-discovery-lignumis") -technology:setPrerequisites({ "space-platform-thruster" }) -technology:addIngredients({ "logistic-science-pack", "chemical-science-pack", "space-science-pack" }) diff --git a/lignumis/prototypes/content/basic-circuit-board.lua b/lignumis/prototypes/content/basic-circuit-board.lua index 79e0312..7c12dcc 100644 --- a/lignumis/prototypes/content/basic-circuit-board.lua +++ b/lignumis/prototypes/content/basic-circuit-board.lua @@ -51,11 +51,7 @@ data:extend({ } }) -if not mods["planet-picker"] and not mods["any-planet-start"] then - Technology:new("copper-processing"):addRecipe("basic-circuit-board-copper") -else - Technology:new("electronics"):addRecipe("basic-circuit-board-copper") -end +Technology:new("copper-processing"):addRecipe("basic-circuit-board-copper") if settings.startup["lignumis-circuit-progression"].value then table.insert(data.raw.recipe["electronic-circuit"].ingredients, { type = "item", name = "basic-circuit-board", amount = 1 }) diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index d81c83e..21fac1d 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -132,8 +132,4 @@ data:extend({ } }) -if not mods["planet-picker"] and not mods["any-planet-start"] then - Technology:new("copper-processing"):addRecipe("burner-agricultural-tower-copper") -else - Technology:new("electronics"):addRecipe("burner-agricultural-tower-copper") -end +Technology:new("copper-processing"):addRecipe("burner-agricultural-tower-copper") \ No newline at end of file diff --git a/lignumis/prototypes/content/technology.lua b/lignumis/prototypes/content/technology.lua index c83db13..fa19344 100644 --- a/lignumis/prototypes/content/technology.lua +++ b/lignumis/prototypes/content/technology.lua @@ -83,83 +83,81 @@ data:extend({ } }) -if not mods["planet-picker"] and not mods["any-planet-start"] then - data:extend({ - { - type = "technology", - name = "planet-discovery-nauvis", - icons = util.technology_icon_constant_planet(Lignumis.graphics .. "technology/nauvis.png"), - icon_size = 256, - essential = true, - effects = { - { - type = "unlock-space-location", - space_location = "nauvis", - use_icon_overlay_constant = true - }, - { - type = "unlock-space-platforms", - modifier = true, - hidden = true - } +data:extend({ + { + type = "technology", + name = "planet-discovery-nauvis", + icons = util.technology_icon_constant_planet(Lignumis.graphics .. "technology/nauvis.png"), + icon_size = 256, + essential = true, + effects = { + { + type = "unlock-space-location", + space_location = "nauvis", + use_icon_overlay_constant = true }, - prerequisites = { "provisional-rocketry" }, - unit = { - count = 100, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 30 + { + type = "unlock-space-platforms", + modifier = true, + hidden = true } }, - { - type = "technology", - name = "iron-processing", - icon = "__base__/graphics/icons/iron-plate.png", - icon_size = 64, - essential = true, - effects = { - { - type = "unlock-recipe", - recipe = "iron-plate" - }, - { - type = "unlock-recipe", - recipe = "iron-chest" - }, - { - type = "unlock-recipe", - recipe = "iron-gear-wheel" - } + prerequisites = { "provisional-rocketry" }, + unit = { + count = 100, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } }, - prerequisites = { "planet-discovery-nauvis" }, - research_trigger = { - type = "mine-entity", - entity = "iron-ore" - } - }, - { - type = "technology", - name = "copper-processing", - icon = "__base__/graphics/icons/copper-plate.png", - icon_size = 64, - essential = true, - effects = { - { - type = "unlock-recipe", - recipe = "copper-plate" - }, - { - type = "unlock-recipe", - recipe = "copper-cable" - } - }, - prerequisites = { "planet-discovery-nauvis" }, - research_trigger = { - type = "mine-entity", - entity = "copper-ore" - } + time = 30 } - }) -end + }, + { + type = "technology", + name = "iron-processing", + icon = "__base__/graphics/icons/iron-plate.png", + icon_size = 64, + essential = true, + effects = { + { + type = "unlock-recipe", + recipe = "iron-plate" + }, + { + type = "unlock-recipe", + recipe = "iron-chest" + }, + { + type = "unlock-recipe", + recipe = "iron-gear-wheel" + } + }, + prerequisites = { "planet-discovery-nauvis" }, + research_trigger = { + type = "mine-entity", + entity = "iron-ore" + } + }, + { + type = "technology", + name = "copper-processing", + icon = "__base__/graphics/icons/copper-plate.png", + icon_size = 64, + essential = true, + effects = { + { + type = "unlock-recipe", + recipe = "copper-plate" + }, + { + type = "unlock-recipe", + recipe = "copper-cable" + } + }, + prerequisites = { "planet-discovery-nauvis" }, + research_trigger = { + type = "mine-entity", + entity = "copper-ore" + } + } +}) \ No newline at end of file diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index 75b9b74..cd907b2 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -129,14 +129,12 @@ table.insert(data.raw["assembling-machine"]["assembling-machine-3"].crafting_cat -- Disable vanilla early game recipes -if not mods["planet-picker"] and not mods["any-planet-start"] then - data.raw.recipe["iron-plate"].enabled = false - data.raw.recipe["iron-gear-wheel"].enabled = false - data.raw.recipe["iron-chest"].enabled = false - data.raw.recipe["copper-plate"].enabled = false - data.raw.recipe["copper-cable"].enabled = false - data.raw.recipe["transport-belt"].enabled = false -end +data.raw.recipe["iron-plate"].enabled = false +data.raw.recipe["iron-gear-wheel"].enabled = false +data.raw.recipe["iron-chest"].enabled = false +data.raw.recipe["copper-plate"].enabled = false +data.raw.recipe["copper-cable"].enabled = false +data.raw.recipe["transport-belt"].enabled = false -- Progressive recipes @@ -157,143 +155,141 @@ end -- Adjust vanilla technologies -if not mods["planet-picker"] and not mods["any-planet-start"] then - local automation_science_pack_technology = data.raw.technology["automation-science-pack"] - automation_science_pack_technology.enabled = false - automation_science_pack_technology.visible_when_disabled = true - automation_science_pack_technology.research_trigger = nil - automation_science_pack_technology.unit = { - count = 1, - ingredients = {}, - time = 1 - } +local automation_science_pack_technology = data.raw.technology["automation-science-pack"] +automation_science_pack_technology.enabled = false +automation_science_pack_technology.visible_when_disabled = true +automation_science_pack_technology.research_trigger = nil +automation_science_pack_technology.unit = { + count = 1, + ingredients = {}, + time = 1 +} - if not mods["aai-industry"] then - local electronics_technology = data.raw.technology["electronics"] - electronics_technology.prerequisites = { "copper-processing" } +if not mods["aai-industry"] then + local electronics_technology = data.raw.technology["electronics"] + electronics_technology.prerequisites = { "copper-processing" } - local steam_power_technology = data.raw.technology["steam-power"] - steam_power_technology.prerequisites = { "iron-processing" } - end + local steam_power_technology = data.raw.technology["steam-power"] + steam_power_technology.prerequisites = { "iron-processing" } +end - local automation_technology = data.raw.technology["automation"] - automation_technology.ignore_tech_cost_multiplier = false +local automation_technology = data.raw.technology["automation"] +automation_technology.ignore_tech_cost_multiplier = false - local logistics_technology = data.raw.technology["logistics"] - table.insert(logistics_technology.effects, { - type = "unlock-recipe", - recipe = "transport-belt" - }) +local logistics_technology = data.raw.technology["logistics"] +table.insert(logistics_technology.effects, { + type = "unlock-recipe", + recipe = "transport-belt" +}) - local landfill_technology = data.raw.technology["landfill"] - landfill_technology.prerequisites = { "burner-automation" } - landfill_technology.unit = { - count = 50, - ingredients = { { "wood-science-pack", 1 } }, - time = 15 - } +local landfill_technology = data.raw.technology["landfill"] +landfill_technology.prerequisites = { "burner-automation" } +landfill_technology.unit = { + count = 50, + ingredients = { { "wood-science-pack", 1 } }, + time = 15 +} - local robots_speed_technology_1 = data.raw.technology["worker-robots-speed-1"] - robots_speed_technology_1.prerequisites = { "provisional-rocketry", "basic-construction-robotics-gold" } - robots_speed_technology_1.unit = { - count = 100, - ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }, - time = 15 - } +local robots_speed_technology_1 = data.raw.technology["worker-robots-speed-1"] +robots_speed_technology_1.prerequisites = { "provisional-rocketry", "basic-construction-robotics-gold" } +robots_speed_technology_1.unit = { + count = 100, + ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }, + time = 15 +} - local robots_speed_technology_2 = data.raw.technology["worker-robots-speed-2"] - robots_speed_technology_2.prerequisites = { - "worker-robots-speed-1", - "logistic-science-pack" - } - robots_speed_technology_2.unit = { - count = 100, - ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } }, - time = 30 - } +local robots_speed_technology_2 = data.raw.technology["worker-robots-speed-2"] +robots_speed_technology_2.prerequisites = { + "worker-robots-speed-1", + "logistic-science-pack" +} +robots_speed_technology_2.unit = { + count = 100, + ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } }, + time = 30 +} - local robots_speed_technology_3 = data.raw.technology["worker-robots-speed-3"] - robots_speed_technology_3.prerequisites = { "robotics", "chemical-science-pack" } - robots_speed_technology_3.unit = { - count = 150, - ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 }, { "chemical-science-pack", 1 } }, - time = 30 - } +local robots_speed_technology_3 = data.raw.technology["worker-robots-speed-3"] +robots_speed_technology_3.prerequisites = { "robotics", "chemical-science-pack" } +robots_speed_technology_3.unit = { + count = 150, + ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 }, { "chemical-science-pack", 1 } }, + time = 30 +} - local robots_speed_technology_4 = data.raw.technology["worker-robots-speed-4"] - robots_speed_technology_4.prerequisites = { "worker-robots-speed-3", "utility-science-pack" } - robots_speed_technology_4.unit.ingredients = { - { "automation-science-pack", 1 }, - { "logistic-science-pack", 1 }, - { "chemical-science-pack", 1 }, - { "utility-science-pack", 1 } - } +local robots_speed_technology_4 = data.raw.technology["worker-robots-speed-4"] +robots_speed_technology_4.prerequisites = { "worker-robots-speed-3", "utility-science-pack" } +robots_speed_technology_4.unit.ingredients = { + { "automation-science-pack", 1 }, + { "logistic-science-pack", 1 }, + { "chemical-science-pack", 1 }, + { "utility-science-pack", 1 } +} - local physical_damage_technology_1 = data.raw.technology["physical-projectile-damage-1"] - physical_damage_technology_1.prerequisites = { "basic-gun-turret" } - physical_damage_technology_1.unit.ingredients = { { "wood-science-pack", 1 } } - table.insert(physical_damage_technology_1.effects, { - type = "turret-attack", - turret_id = "basic-gun-turret", - modifier = 0.2 - }) +local physical_damage_technology_1 = data.raw.technology["physical-projectile-damage-1"] +physical_damage_technology_1.prerequisites = { "basic-gun-turret" } +physical_damage_technology_1.unit.ingredients = { { "wood-science-pack", 1 } } +table.insert(physical_damage_technology_1.effects, { + type = "turret-attack", + turret_id = "basic-gun-turret", + modifier = 0.2 +}) - local weapon_speed_technology_1 = data.raw.technology["weapon-shooting-speed-1"] - weapon_speed_technology_1.prerequisites = table.deepcopy(physical_damage_technology_1.prerequisites) - weapon_speed_technology_1.unit.ingredients = table.deepcopy(physical_damage_technology_1.unit.ingredients) +local weapon_speed_technology_1 = data.raw.technology["weapon-shooting-speed-1"] +weapon_speed_technology_1.prerequisites = table.deepcopy(physical_damage_technology_1.prerequisites) +weapon_speed_technology_1.unit.ingredients = table.deepcopy(physical_damage_technology_1.unit.ingredients) - local physical_damage_technology_2 = data.raw.technology["physical-projectile-damage-2"] - physical_damage_technology_2.prerequisites = { "physical-projectile-damage-1", "steam-science-pack" } - physical_damage_technology_2.unit.ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } } - table.insert(physical_damage_technology_2.effects, { - type = "turret-attack", - turret_id = "basic-gun-turret", - modifier = 0.2 - }) +local physical_damage_technology_2 = data.raw.technology["physical-projectile-damage-2"] +physical_damage_technology_2.prerequisites = { "physical-projectile-damage-1", "steam-science-pack" } +physical_damage_technology_2.unit.ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } } +table.insert(physical_damage_technology_2.effects, { + type = "turret-attack", + turret_id = "basic-gun-turret", + modifier = 0.2 +}) - local weapon_speed_technology_2 = data.raw.technology["weapon-shooting-speed-2"] - weapon_speed_technology_2.prerequisites = { "weapon-shooting-speed-1", "steam-science-pack" } - weapon_speed_technology_2.unit.ingredients = table.deepcopy(physical_damage_technology_2.unit.ingredients) +local weapon_speed_technology_2 = data.raw.technology["weapon-shooting-speed-2"] +weapon_speed_technology_2.prerequisites = { "weapon-shooting-speed-1", "steam-science-pack" } +weapon_speed_technology_2.unit.ingredients = table.deepcopy(physical_damage_technology_2.unit.ingredients) - local physical_damage_technology_3 = data.raw.technology["physical-projectile-damage-3"] - physical_damage_technology_3.prerequisites = { "military-2", "logistic-science-pack" } - physical_damage_technology_3.unit.ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } } - physical_damage_technology_3.upgrade = false - table.insert(physical_damage_technology_3.effects, { - type = "turret-attack", - turret_id = "basic-gun-turret", - modifier = 0.3 - }) +local physical_damage_technology_3 = data.raw.technology["physical-projectile-damage-3"] +physical_damage_technology_3.prerequisites = { "military-2", "logistic-science-pack" } +physical_damage_technology_3.unit.ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } } +physical_damage_technology_3.upgrade = false +table.insert(physical_damage_technology_3.effects, { + type = "turret-attack", + turret_id = "basic-gun-turret", + modifier = 0.3 +}) - local weapon_speed_technology_3 = data.raw.technology["weapon-shooting-speed-3"] - weapon_speed_technology_3.prerequisites = { "military-2", "logistic-science-pack" } - weapon_speed_technology_3.unit.ingredients = table.deepcopy(physical_damage_technology_3.unit.ingredients) - weapon_speed_technology_3.upgrade = false +local weapon_speed_technology_3 = data.raw.technology["weapon-shooting-speed-3"] +weapon_speed_technology_3.prerequisites = { "military-2", "logistic-science-pack" } +weapon_speed_technology_3.unit.ingredients = table.deepcopy(physical_damage_technology_3.unit.ingredients) +weapon_speed_technology_3.upgrade = false - local physical_damage_technology_4 = data.raw.technology["physical-projectile-damage-4"] - physical_damage_technology_4.prerequisites = { "physical-projectile-damage-3", "military-science-pack" } - table.insert(physical_damage_technology_4.effects, { - type = "turret-attack", - turret_id = "basic-gun-turret", - modifier = 0.3 - }) +local physical_damage_technology_4 = data.raw.technology["physical-projectile-damage-4"] +physical_damage_technology_4.prerequisites = { "physical-projectile-damage-3", "military-science-pack" } +table.insert(physical_damage_technology_4.effects, { + type = "turret-attack", + turret_id = "basic-gun-turret", + modifier = 0.3 +}) - local weapon_speed_technology_4 = data.raw.technology["weapon-shooting-speed-4"] - weapon_speed_technology_4.prerequisites = { "weapon-shooting-speed-3", "military-science-pack" } +local weapon_speed_technology_4 = data.raw.technology["weapon-shooting-speed-4"] +weapon_speed_technology_4.prerequisites = { "weapon-shooting-speed-3", "military-science-pack" } - local production_science_pack_technology = Technology:new("production-science-pack") - production_science_pack_technology:replacePrerequisite("advanced-material-processing-2", "space-platform-thruster") - production_science_pack_technology:addIngredients({ "space-science-pack" }) - if settings.startup["lignumis-technology-progression"].value then - production_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" }) - end +local production_science_pack_technology = Technology:new("production-science-pack") +production_science_pack_technology:replacePrerequisite("advanced-material-processing-2", "space-platform-thruster") +production_science_pack_technology:addIngredients({ "space-science-pack" }) +if settings.startup["lignumis-technology-progression"].value then + production_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" }) +end - local utility_science_pack_technology = Technology:new("utility-science-pack") - utility_science_pack_technology:setPrerequisites({ "space-platform-thruster" }) - utility_science_pack_technology:addIngredients({ "space-science-pack" }) - if settings.startup["lignumis-technology-progression"].value then - utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" }) - end +local utility_science_pack_technology = Technology:new("utility-science-pack") +utility_science_pack_technology:setPrerequisites({ "space-platform-thruster" }) +utility_science_pack_technology:addIngredients({ "space-science-pack" }) +if settings.startup["lignumis-technology-progression"].value then + utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" }) end if not mods["planet-muluna"] then -- Muluna does the same diff --git a/lignumis/scripts/init-existing.lua b/lignumis/scripts/init-existing.lua index c5cb392..3836b3a 100644 --- a/lignumis/scripts/init-existing.lua +++ b/lignumis/scripts/init-existing.lua @@ -15,11 +15,11 @@ InitExisting.on_init = function() end for _, force in pairs(game.forces) do - force.technologies["iron-processing"].researched = true - force.technologies["copper-processing"].researched = true if force.is_space_location_unlocked("nauvis") then force.technologies["planet-discovery-nauvis"].researched = true end + force.technologies["iron-processing"].researched = true + force.technologies["copper-processing"].researched = true end game.print { "", { "lignumis.start-new-game" } } diff --git a/lignumis/scripts/init-new.lua b/lignumis/scripts/init-new.lua index 1acc2fb..efe1a07 100644 --- a/lignumis/scripts/init-new.lua +++ b/lignumis/scripts/init-new.lua @@ -62,7 +62,6 @@ end InitNew.on_init = function() if game.tick > 0 then return end - if script.active_mods["planet-picker"] or script.active_mods["any-planet-start"] then return end init_intro() init_space_locations() diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index 2b0ceba..24b5af4 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -37,7 +37,6 @@ end -- Initialize the freeplay scenario local function init_freeplay(event) - if script.active_mods["planet-picker"] or script.active_mods["any-planet-start"] then return end if storage.crashed_ship_lignumis then return end local player = game.get_player(event.player_index) diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 744094c..47268af 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -52,12 +52,3 @@ if mods["wood-military"] then data.raw["bool-setting"]["lignumis-ammo-progression"].forced_value = false data.raw["bool-setting"]["lignumis-ammo-progression"].hidden = true end - -if mods["planet-picker"] or mods["any-planet-start"] then - data.raw["bool-setting"]["lignumis-belt-progression"].forced_value = false - data.raw["bool-setting"]["lignumis-belt-progression"].hidden = true - data.raw["bool-setting"]["lignumis-inserter-progression"].forced_value = false - data.raw["bool-setting"]["lignumis-inserter-progression"].hidden = true - data.raw["bool-setting"]["lignumis-ammo-progression"].forced_value = false - data.raw["bool-setting"]["lignumis-ammo-progression"].hidden = true -end From 24a33546d551d60ca27679c29fcbf271c11e12b4 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 12 Mar 2025 20:24:51 +0100 Subject: [PATCH 020/150] Possibly fix problems with Wooden rocket silo in remote view --- lignumis/scripts/wooden-rocket-silo.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lignumis/scripts/wooden-rocket-silo.lua b/lignumis/scripts/wooden-rocket-silo.lua index 0693d13..dd64fbc 100644 --- a/lignumis/scripts/wooden-rocket-silo.lua +++ b/lignumis/scripts/wooden-rocket-silo.lua @@ -64,12 +64,13 @@ local function on_gui_opened(event) if not entity or not entity.valid then return end if entity.name ~= "provisional-rocket-silo-ready" then return end local player = game.get_player(event.player_index) - if player.controller_type ~= defines.controllers.character then return end if player.gui.relative["provisional-rocket-silo-relative-frame"] then player.gui.relative["provisional-rocket-silo-relative-frame"].destroy() end + if player.controller_type ~= defines.controllers.character then return end + build_gui(player, entity) end From 6186bf68ad4cad2b0ebcac582f921a1c960b243b Mon Sep 17 00:00:00 2001 From: Nydaleclya Date: Wed, 5 Mar 2025 10:51:29 +0100 Subject: [PATCH 021/150] lignumis/prototypes/compatibility/aai-loaders.lua aktualisiert --- lignumis/prototypes/compatibility/aai-loaders.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lignumis/prototypes/compatibility/aai-loaders.lua b/lignumis/prototypes/compatibility/aai-loaders.lua index 77b4c84..3c356dc 100644 --- a/lignumis/prototypes/compatibility/aai-loaders.lua +++ b/lignumis/prototypes/compatibility/aai-loaders.lua @@ -34,6 +34,7 @@ AAILoaders.make_tier({ unlubricated_recipe = mods["aai-loaders-sane"] and recipe or { ingredients = { { type = "item", name = "lumber", amount = 50 }, + basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 100 } or { type = "item", name = "gold-cable", amount = 100 }, { type = "item", name = "wood-transport-belt", amount = 1 } }, From 5e22624330091ff78518d29c8e6f910e089b7d51 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 12 Mar 2025 20:31:48 +0100 Subject: [PATCH 022/150] AAI Loader: Adjust recipe --- lignumis/prototypes/compatibility/aai-loaders.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lignumis/prototypes/compatibility/aai-loaders.lua b/lignumis/prototypes/compatibility/aai-loaders.lua index 3c356dc..25555e7 100644 --- a/lignumis/prototypes/compatibility/aai-loaders.lua +++ b/lignumis/prototypes/compatibility/aai-loaders.lua @@ -33,9 +33,9 @@ AAILoaders.make_tier({ recipe = recipe, unlubricated_recipe = mods["aai-loaders-sane"] and recipe or { ingredients = { - { type = "item", name = "lumber", amount = 50 }, - basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 100 } or - { type = "item", name = "gold-cable", amount = 100 }, + { type = "item", name = "lumber", amount = 50 }, + basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 50 } or + { type = "item", name = "gold-cable", amount = 100 }, { type = "item", name = "wood-transport-belt", amount = 1 } }, energy_required = 5 From eb849de427852280a7f68a822e8c853facbf01ed Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 12 Mar 2025 20:44:17 +0100 Subject: [PATCH 023/150] AAI Loaders: Yellow loader recipe uses wood loader --- lignumis/info.json | 1 + lignumis/prototypes/compatibility/aai-loaders-final.lua | 5 +++++ lignumis/prototypes/compatibility/final.lua | 2 ++ 3 files changed, 8 insertions(+) create mode 100644 lignumis/prototypes/compatibility/aai-loaders-final.lua diff --git a/lignumis/info.json b/lignumis/info.json index e86051b..616a543 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -26,6 +26,7 @@ "?aai-industry", "?Diversitree", "?aai-loaders", + "?aai-loaders-sane", "?atan-nuclear-science", "?lane-splitters", "!planet-picker", diff --git a/lignumis/prototypes/compatibility/aai-loaders-final.lua b/lignumis/prototypes/compatibility/aai-loaders-final.lua new file mode 100644 index 0000000..1465a35 --- /dev/null +++ b/lignumis/prototypes/compatibility/aai-loaders-final.lua @@ -0,0 +1,5 @@ +local Recipe = require("__cf-lib__/data/Recipe") + +if not mods["aai-loaders"] then return end + +Recipe:new("aai-loader"):replaceIngredient("transport-belt", "aai-wood-loader", 1) \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/final.lua b/lignumis/prototypes/compatibility/final.lua index 13dc3b3..ddb16d2 100644 --- a/lignumis/prototypes/compatibility/final.lua +++ b/lignumis/prototypes/compatibility/final.lua @@ -1,3 +1,5 @@ +require("aai-loaders-final") + if not data.raw.technology["legendary-quality"] then table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality") end \ No newline at end of file From 3eb14395ac24130b1c56ec18cf708dd0bc8ff9bc Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 13 Mar 2025 13:57:16 +0100 Subject: [PATCH 024/150] Add more recipes to lumber mill --- lignumis/prototypes/compatibility/aai-loaders.lua | 2 ++ .../prototypes/compatibility/lane-splitters.lua | 1 + lignumis/prototypes/content/basic-gun-turret.lua | 1 + .../content/burner-agricultural-tower.lua | 2 ++ .../content/burner-assembling-machine.lua | 2 ++ .../content/burner-long-handed-inserter.lua | 1 + lignumis/prototypes/content/wood-lab.lua | 1 + lignumis/prototypes/content/wood-logistics.lua | 15 +++++++++++++-- lignumis/prototypes/content/wood-military.lua | 1 + lignumis/prototypes/content/wooden-gearwheel.lua | 1 + lignumis/prototypes/integrations/Wood-Walls.lua | 1 + lignumis/prototypes/integrations/vanilla.lua | 5 ++++- 12 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lignumis/prototypes/compatibility/aai-loaders.lua b/lignumis/prototypes/compatibility/aai-loaders.lua index 25555e7..4a89171 100644 --- a/lignumis/prototypes/compatibility/aai-loaders.lua +++ b/lignumis/prototypes/compatibility/aai-loaders.lua @@ -44,6 +44,8 @@ AAILoaders.make_tier({ localise = false }) +data.raw.recipe["aai-wood-loader"].category = "wood-processing-or-assembling" + if not basic_circuit_board then local nauvis_recipe = Recipe:new("aai-wood-loader"):clone("wood-loader-electronic-circuit") nauvis_recipe:replaceIngredient("gold-cable", "electronic-circuit") diff --git a/lignumis/prototypes/compatibility/lane-splitters.lua b/lignumis/prototypes/compatibility/lane-splitters.lua index 2f1fc0e..f61061a 100644 --- a/lignumis/prototypes/compatibility/lane-splitters.lua +++ b/lignumis/prototypes/compatibility/lane-splitters.lua @@ -19,6 +19,7 @@ lane_splitter.prototype.structure_patch.south.filename = data.raw.splitter["wood lane_splitter.prototype.structure_patch.west.filename = data.raw.splitter["wood-splitter"].structure_patch.west.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.recipe.category = "wood-processing-or-assembling" data:extend({ lane_splitter.prototype, diff --git a/lignumis/prototypes/content/basic-gun-turret.lua b/lignumis/prototypes/content/basic-gun-turret.lua index 92eaeb7..79e5074 100644 --- a/lignumis/prototypes/content/basic-gun-turret.lua +++ b/lignumis/prototypes/content/basic-gun-turret.lua @@ -48,6 +48,7 @@ local turret_item = { local turret_recipe = { type = "recipe", name = "basic-gun-turret", + category = "wood-processing-or-assembling", enabled = false, energy_required = 8, ingredients = { diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index 21fac1d..ee6bc84 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -83,6 +83,7 @@ data:extend({ { type = "recipe", name = "burner-agricultural-tower", + category = "wood-processing-or-assembling", energy_required = 10, ingredients = { { type = "item", name = "stone-brick", amount = 5 }, @@ -114,6 +115,7 @@ data:extend({ { type = "recipe", name = "burner-agricultural-tower-copper", + category = "wood-processing-or-assembling", localised_name = { "entity-name.burner-agricultural-tower" }, icons = { { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" }, diff --git a/lignumis/prototypes/content/burner-assembling-machine.lua b/lignumis/prototypes/content/burner-assembling-machine.lua index 72ec137..04ed3f2 100644 --- a/lignumis/prototypes/content/burner-assembling-machine.lua +++ b/lignumis/prototypes/content/burner-assembling-machine.lua @@ -68,6 +68,7 @@ data:extend({ { type = "recipe", name = "burner-assembling-machine", + category = "wood-processing-or-assembling", enabled = false, ingredients = { { type = "item", name = "wooden-gear-wheel", amount = 5 }, @@ -108,6 +109,7 @@ if not basic_circuit_board then { type = "recipe", name = "burner-assembling-machine-electronic-circuit", + category = "wood-processing-or-assembling", localised_name = { "entity-name.burner-assembling-machine" }, icons = { { icon = Lignumis.graphics .. "icons/burner-assembling-machine.png" }, diff --git a/lignumis/prototypes/content/burner-long-handed-inserter.lua b/lignumis/prototypes/content/burner-long-handed-inserter.lua index 27e1d99..2e701aa 100644 --- a/lignumis/prototypes/content/burner-long-handed-inserter.lua +++ b/lignumis/prototypes/content/burner-long-handed-inserter.lua @@ -63,6 +63,7 @@ data:extend({ { type = "recipe", name = "burner-long-handed-inserter", + category = "wood-processing-or-assembling", enabled = false, ingredients = { { type = "item", name = "wooden-gear-wheel", amount = 1 }, diff --git a/lignumis/prototypes/content/wood-lab.lua b/lignumis/prototypes/content/wood-lab.lua index 39d7020..6f06645 100644 --- a/lignumis/prototypes/content/wood-lab.lua +++ b/lignumis/prototypes/content/wood-lab.lua @@ -144,6 +144,7 @@ data:extend({ { type = "recipe", name = "wood-lab", + category = "wood-processing-or-assembling", energy_required = 2, ingredients = { { type = "item", name = "lumber", amount = 10 }, diff --git a/lignumis/prototypes/content/wood-logistics.lua b/lignumis/prototypes/content/wood-logistics.lua index 4caedcd..3ede84a 100644 --- a/lignumis/prototypes/content/wood-logistics.lua +++ b/lignumis/prototypes/content/wood-logistics.lua @@ -41,7 +41,17 @@ Belt.RecipeBuilder:new() basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or { type = "item", name = "gold-cable", amount = 10 } }) - :apply() + :apply({ + transportBelt = { + category = "wood-processing-or-assembling" + }, + undergroundBelt = { + category = "wood-processing-or-assembling" + }, + splitter = { + category = "wood-processing-or-assembling" + } + }) Belt.TechnologyBuilder:new() :prerequisites({ "wood-science-pack" }) @@ -65,7 +75,8 @@ if not basic_circuit_board then icons = { { icon = splitter_item.icon }, { icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } } - } + }, + category = "wood-processing-or-assembling" } }) .splitter diff --git a/lignumis/prototypes/content/wood-military.lua b/lignumis/prototypes/content/wood-military.lua index 8f00a69..775245b 100644 --- a/lignumis/prototypes/content/wood-military.lua +++ b/lignumis/prototypes/content/wood-military.lua @@ -81,6 +81,7 @@ data:extend({ { type = "recipe", name = "wood-darts-magazine", + category = "wood-processing-or-assembling", energy_required = 1, ingredients = { { type = "item", name = "wood", amount = 2 } }, results = { { type = "item", name = "wood-darts-magazine", amount = 1 } } diff --git a/lignumis/prototypes/content/wooden-gearwheel.lua b/lignumis/prototypes/content/wooden-gearwheel.lua index 0a7e5b5..229b175 100644 --- a/lignumis/prototypes/content/wooden-gearwheel.lua +++ b/lignumis/prototypes/content/wooden-gearwheel.lua @@ -17,6 +17,7 @@ data:extend({ { type = "recipe", name = "wooden-gear-wheel", + category = "wood-processing-or-assembling", ingredients = { { type = "item", name = "lumber", amount = 1 } }, results = { { type = "item", name = "wooden-gear-wheel", amount = 2 } }, allow_productivity = true diff --git a/lignumis/prototypes/integrations/Wood-Walls.lua b/lignumis/prototypes/integrations/Wood-Walls.lua index 479f2cd..782726a 100644 --- a/lignumis/prototypes/integrations/Wood-Walls.lua +++ b/lignumis/prototypes/integrations/Wood-Walls.lua @@ -1,6 +1,7 @@ local recipe = data.raw.recipe["wooden-wall"] recipe.ingredients = { { type = "item", name = "lumber", amount = 4 } } recipe.results = { { type = "item", name = "wooden-wall", amount = 1 } } +recipe.category = "wood-processing-or-assembling" -- https://mods.factorio.com/mod/Wood-Walls/discussion/679915cbb8bf3c84c65db404 data.raw.corpse["woodenwall-remnants"].icon = "__Wood-Walls__/graphics/wooden-wall/wooden-wall.png" \ No newline at end of file diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index cd907b2..4db50fa 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -20,6 +20,7 @@ local drill_item = data.raw["item"]["burner-mining-drill"] drill_item.icon = Lignumis.graphics .. "icons/burner-mining-drill.png" local drill_recipe = data.raw["recipe"]["burner-mining-drill"] +drill_recipe.category = "wood-processing-or-assembling" drill_recipe.ingredients = { { type = "item", name = "stone-furnace", amount = 1 }, { type = "item", name = "wooden-gear-wheel", amount = basic_circuit_board and 2 or 3 }, @@ -40,10 +41,12 @@ burner_inserter.energy_source.initial_fuel_percent = 0.15 data.raw.item["burner-inserter"].icon = Lignumis.graphics .. "icons/burner-inserter.png" -data.raw.recipe["burner-inserter"].ingredients = { +local burner_inesrter_recipe = data.raw.recipe["burner-inserter"] +burner_inesrter_recipe.ingredients = { { type = "item", name = "wooden-gear-wheel", amount = 1 }, { type = "item", name = "lumber", amount = 1 } } +burner_inesrter_recipe.category = "wood-processing-or-assembling" -- Stone furnace From 41a84a503f38e2695047742fec324aaaec8f9429 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 13 Mar 2025 14:05:48 +0100 Subject: [PATCH 025/150] Add copper recipe for lumber mill --- .../content/burner-agricultural-tower.lua | 12 ++--- lignumis/prototypes/content/lumber-mill.lua | 51 +++++++++---------- 2 files changed, 30 insertions(+), 33 deletions(-) diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index ee6bc84..e79a4d9 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -119,14 +119,14 @@ data:extend({ localised_name = { "entity-name.burner-agricultural-tower" }, icons = { { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" }, - { icon = "__base__/graphics/icons/copper-plate.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 } } }, energy_required = 10, ingredients = { - { type = "item", name = "stone-brick", amount = 5 }, - { type = "item", name = "wooden-gear-wheel", amount = 20 }, - { type = "item", name = "lumber", amount = 20 }, - { type = "item", name = "copper-plate", amount = 10 }, + { type = "item", name = "stone-brick", amount = 5 }, + { type = "item", name = "wooden-gear-wheel", amount = 20 }, + { type = "item", name = "lumber", amount = 20 }, + { type = "item", name = "copper-plate", amount = 10 }, { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 } }, results = { { type = "item", name = "burner-agricultural-tower", amount = 1 } }, @@ -134,4 +134,4 @@ data:extend({ } }) -Technology:new("copper-processing"):addRecipe("burner-agricultural-tower-copper") \ No newline at end of file +Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("burner-agricultural-tower-copper") diff --git a/lignumis/prototypes/content/lumber-mill.lua b/lignumis/prototypes/content/lumber-mill.lua index 1d2f6ff..add1dd3 100644 --- a/lignumis/prototypes/content/lumber-mill.lua +++ b/lignumis/prototypes/content/lumber-mill.lua @@ -1,3 +1,4 @@ +local Technology = require("__cf-lib__/data/Technology") local LumberMillFactory = require(MF.buildings .. "LumberMill") local LumberMill = LumberMillFactory() @@ -29,10 +30,10 @@ local lumber_mill_item = LumberMill.ItemBuilder:new() LumberMill.RecipeBuilder:new() :ingredients(table.trim({ - { type = "item", name = "stone-brick", amount = 40 }, - { type = "item", name = "lumber", amount = 100 }, - { type = "item", name = "wooden-gear-wheel", amount = 100 }, - { type = "item", name = "gold-plate", amount = basic_circuit_board and 30 or 60 }, + { type = "item", name = "stone-brick", amount = 40 }, + { type = "item", name = "lumber", amount = 100 }, + { type = "item", name = "wooden-gear-wheel", amount = 100 }, + { type = "item", name = "gold-plate", amount = basic_circuit_board and 30 or 60 }, basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 30 } or nil, { type = "item", name = "burner-assembling-machine", amount = 5 } })) @@ -47,27 +48,23 @@ LumberMill.TechnologyBuilder:new() :ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }) :apply() -if not basic_circuit_board then - LumberMill.RecipeBuilder:new() - :ingredients({ - { type = "item", name = "stone-brick", amount = 40 }, - { type = "item", name = "lumber", amount = 50 }, - { type = "item", name = "iron-gear-wheel", amount = 50 }, - { type = "item", name = "electronic-circuit", amount = 20 }, - { type = "item", name = "assembling-machine-1", amount = 2 } - }) - :apply({ - name = "lumber-mill-electronic-circuit", - localised_name = { "entity-name.lumber-mill" }, - category = "wood-processing-or-assembling", - icons = { - { icon = lumber_mill_item.icon }, - { icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } } - } - }) - - table.insert(data.raw.technology["electronics"].effects, { - type = "unlock-recipe", - recipe = "lumber-mill-electronic-circuit" +LumberMill.RecipeBuilder:new() + :ingredients({ + { type = "item", name = "stone-brick", amount = 40 }, + { type = "item", name = "lumber", amount = 50 }, + { type = "item", name = "iron-gear-wheel", amount = 50 }, + { type = "item", name = "copper-plate", amount = basic_circuit_board and 30 or 60 }, + { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 30 }, + { type = "item", name = "assembling-machine-1", amount = 2 } }) -end + :apply({ + name = "lumber-mill-copper", + localised_name = { "entity-name.lumber-mill" }, + category = "wood-processing-or-assembling", + icons = { + { 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 } } + } + }) + +Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper") From 56974406d7a608523de201a013d84818710927ca Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 13 Mar 2025 14:17:42 +0100 Subject: [PATCH 026/150] 1.0.31 --- lignumis/changelog.txt | 13 +++++++++++++ lignumis/info.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index bf13d97..830ccf3 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,17 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.31 +Date: 13.03.2025 + Breaking Changes: + - Any planet start/Planet picker: Mark as incompatible + Changes: + - Add more recipes to lumber mill + - AAI Loaders: Expensive mode recipe uses basic circuit boards (thanks Nydaleclya) + - AAI Loaders: Yellow loader recipe uses wood loader + Bug Fixes: + - Add missing translation + - Possibly fix problems with Wooden rocket silo in remote view + - Add copper recipe for the lumber mill +--------------------------------------------------------------------------------------------------- Version: 1.0.30 Date: 06.03.2025 Bug Fixes: diff --git a/lignumis/info.json b/lignumis/info.json index 616a543..bac495f 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.30", + "version": "1.0.31", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 598d6a241fe66611484b9459ca6267f4679de88d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 13 Mar 2025 14:29:34 +0100 Subject: [PATCH 027/150] Readme --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6de46ea..7292cea 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ This mod extends the early game of Space Age by putting you on the moon "Lignumi The duration of the stay on Lignumis will be rather short. The impact of the later game will still be substantial (once implemented). +**Warning when adding to existing games:** With the default settings, this mod will break a few things in your existing bases and space ships. Check out the settings to disable what you don't like. + ## Mod recommendations The following mods can be a great addition for this mod: @@ -109,11 +111,13 @@ If your modded lab is special and it should not support these science packs, use - Trees must not die when absorbing noise - https://lua-api.factorio.com/latest/types/TreeVariation.html - Improve transition to Nauvis a bit more -- Add late-game recipe for oil from wood pulp - Find a better message when transitioning to Nauvis - 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) - Compatibility with [Noble Metals](https://mods.factorio.com/mod/bzgold) once it's updated +- "Any planet start" like feature that moves Lignumis to any other planet as the second planet +- "Hardcore Lignumis" ## Credits From cbba8dddf2a2c8a30575f4e87b8def7a81d25062 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Mar 2025 00:37:50 +0100 Subject: [PATCH 028/150] Balance noise --- .../content/burner-agricultural-tower.lua | 2 +- lignumis/prototypes/content/noise.lua | 40 +++++++++---------- .../prototypes/content/wood-logistics.lua | 6 +-- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index e79a4d9..d87f022 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -18,7 +18,7 @@ agricultural_tower.energy_source = { fuel_categories = { "chemical" }, effectivity = 1, fuel_inventory_size = 1, - emissions_per_minute = { noise = 100 } + emissions_per_minute = { noise = 75 } } agricultural_tower.resistances = nil agricultural_tower.input_inventory_size = 1 diff --git a/lignumis/prototypes/content/noise.lua b/lignumis/prototypes/content/noise.lua index 423ef0b..e48d2fc 100644 --- a/lignumis/prototypes/content/noise.lua +++ b/lignumis/prototypes/content/noise.lua @@ -65,9 +65,9 @@ end -- Walls absorb noise -emit_constant("wall", "wooden-wall", -10) -emit_constant("wall", "stone-wall", -20) -emit_constant("gate", "gate", -10) +emit_constant("wall", "wooden-wall", -15) +emit_constant("wall", "stone-wall", -25) +emit_constant("gate", "gate", -20) -- Buildings emit noise @@ -78,8 +78,8 @@ emit("mining-drill", "burner-mining-drill", 50) emit("mining-drill", "electric-mining-drill", 100) emit("mining-drill", "big-mining-drill", 200) --emit("mining-drill", "deep-miner", 2000) ---emit("agricultural-tower", "burner-agricultural-tower", 100) -emit("agricultural-tower", "agricultural-tower", 100) +--emit("agricultural-tower", "burner-agricultural-tower", 75) +emit("agricultural-tower", "agricultural-tower", 75) --emit("assembling-machine", "burner-assembling-machine", 50) --emit("assembling-machine", "steam-assembling-machine", 50) emit("assembling-machine", "assembling-machine-1", 10) @@ -100,18 +100,18 @@ emit("lab", "biolab", 20) emit("locomotive", "locomotive", 200) emit_constant("locomotive", "locomotive", 10) ---emit_constant("transport-belt", "wood-transport-belt", 3) -emit_constant("transport-belt", "transport-belt", 4) -emit_constant("transport-belt", "fast-transport-belt", 8) -emit_constant("transport-belt", "express-transport-belt", 12) -emit_constant("transport-belt", "turbo-transport-belt", 16) ---emit_constant("underground-belt", "wood-underground-belt", 30) -emit_constant("underground-belt", "underground-belt", 40) -emit_constant("underground-belt", "fast-underground-belt", 50) -emit_constant("underground-belt", "express-underground-belt", 60) -emit_constant("underground-belt", "turbo-underground-belt", 80) ---emit_constant("splitter", "wood-splitter", 60) -emit_constant("splitter", "splitter", 70) -emit_constant("splitter", "fast-splitter", 80) -emit_constant("splitter", "express-splitter", 90) -emit_constant("splitter", "turbo-splitter", 100) \ No newline at end of file +--emit_constant("transport-belt", "wood-transport-belt", 2.4) +emit_constant("transport-belt", "transport-belt", 3) +emit_constant("transport-belt", "fast-transport-belt", 4) +emit_constant("transport-belt", "express-transport-belt", 6) +emit_constant("transport-belt", "turbo-transport-belt", 8) +--emit_constant("underground-belt", "wood-underground-belt", 15) +emit_constant("underground-belt", "underground-belt", 20) +emit_constant("underground-belt", "fast-underground-belt", 30) +emit_constant("underground-belt", "express-underground-belt", 40) +emit_constant("underground-belt", "turbo-underground-belt", 50) +--emit_constant("splitter", "wood-splitter", 30) +emit_constant("splitter", "splitter", 40) +emit_constant("splitter", "fast-splitter", 50) +emit_constant("splitter", "express-splitter", 60) +emit_constant("splitter", "turbo-splitter", 80) \ No newline at end of file diff --git a/lignumis/prototypes/content/wood-logistics.lua b/lignumis/prototypes/content/wood-logistics.lua index 3ede84a..6d180d4 100644 --- a/lignumis/prototypes/content/wood-logistics.lua +++ b/lignumis/prototypes/content/wood-logistics.lua @@ -10,13 +10,13 @@ Belt.EntityBuilder:new() :animationSpeedMultiplier(1.01) :apply({ transportBelt = { - emissions_per_second = { noise = 0.05 } + emissions_per_second = { noise = 0.04 } }, undergroundBelt = { - emissions_per_second = { noise = 0.5 } + emissions_per_second = { noise = 0.25 } }, splitter = { - emissions_per_second = { noise = 1 } + emissions_per_second = { noise = 0.5 } } }) From 1b622ffa051c4b5c55d699972d0cfb4f3c9c911b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Mar 2025 12:01:37 +0100 Subject: [PATCH 029/150] Restrict provisional rocket silo to Lignumis --- lignumis/prototypes/content/wooden-rocket-silo.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lignumis/prototypes/content/wooden-rocket-silo.lua b/lignumis/prototypes/content/wooden-rocket-silo.lua index 20afc59..feb5462 100644 --- a/lignumis/prototypes/content/wooden-rocket-silo.lua +++ b/lignumis/prototypes/content/wooden-rocket-silo.lua @@ -144,3 +144,7 @@ data:extend({ silo_ready, silo_ready_item }) + +PlanetsLib.restrict_to_planet(silo, "lignumis") +PlanetsLib.restrict_to_planet(silo_recipe, "lignumis") +PlanetsLib.restrict_to_planet(rocket_part_recipe, "lignumis") \ No newline at end of file From 34d3b4a1a5e64197ec2262219afee53b6ecaa665 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Mar 2025 18:28:27 +0100 Subject: [PATCH 030/150] Add setting for assembler recipe progression and move some lumber mill recipes to a setting --- lignumis/locale/en/strings.cfg | 4 ++++ .../prototypes/content/basic-gun-turret.lua | 4 +++- .../content/burner-assembling-machine.lua | 8 +++++--- .../content/burner-long-handed-inserter.lua | 4 +++- lignumis/prototypes/integrations/vanilla.lua | 17 ++++++++++------- lignumis/settings.lua | 16 ++++++++++++++++ 6 files changed, 41 insertions(+), 12 deletions(-) diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 3a28692..5832cad 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -169,6 +169,8 @@ lignumis-ammo-progression=Enable progressive ammo recipes lignumis-technology-progression=Enable progressive technologies lignumis-basic-circuit-board=Enable basic circuit board lignumis-circuit-progression=Enable progressive circuit recipes +lignumis-assembler-progression=Enable progressive assembler recipes +lignumis-lumber-mill-more-recipes=Enable more recipes for the lumber mill [mod-setting-description] lignumis-belt-progression=Yellow belts will require wood belts to craft. @@ -177,6 +179,8 @@ lignumis-ammo-progression=Firearm magazines will require wooden darts magazines lignumis-technology-progression=Adds wood and steam science packs to most late game technologies. Disabling this removes the relevance of Lignumis' science packs in the late game. lignumis-basic-circuit-board=Recipes use basic circuit boards instead of gold cables and gold plates where appropriate. Both gold and copper recipes will be added. lignumis-circuit-progression=Electric circuits will require basic circuit boards to craft. +lignumis-assembler-progression=Assembling machine 1 will require burner assembling machines to craft. +lignumis-lumber-mill-more-recipes=The lumber mill can also craft basic turrets, burner assemblers and burner inserters. Improves balancing wood usage when all progressive recipes are enabled and helps with marathon games. [entity-status] no-quality-catalyst=No quality catalyst diff --git a/lignumis/prototypes/content/basic-gun-turret.lua b/lignumis/prototypes/content/basic-gun-turret.lua index 79e5074..75428e1 100644 --- a/lignumis/prototypes/content/basic-gun-turret.lua +++ b/lignumis/prototypes/content/basic-gun-turret.lua @@ -48,7 +48,6 @@ local turret_item = { local turret_recipe = { type = "recipe", name = "basic-gun-turret", - category = "wood-processing-or-assembling", enabled = false, energy_required = 8, ingredients = { @@ -58,6 +57,9 @@ local turret_recipe = { }, results = { { type = "item", name = "basic-gun-turret", amount = 1 } } } +if settings.startup["lignumis-lumber-mill-more-recipes"].value then + turret_recipe.category = "wood-processing-or-assembling" +end local turret_technology = { type = "technology", diff --git a/lignumis/prototypes/content/burner-assembling-machine.lua b/lignumis/prototypes/content/burner-assembling-machine.lua index 04ed3f2..a0893e7 100644 --- a/lignumis/prototypes/content/burner-assembling-machine.lua +++ b/lignumis/prototypes/content/burner-assembling-machine.lua @@ -50,6 +50,8 @@ remnants.animation[2].filename = gfx .. "burner-assembling-machine-remnants.png" remnants.animation[3].filename = gfx .. "burner-assembling-machine-remnants.png" 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({ assembling_machine, remnants, @@ -68,7 +70,7 @@ data:extend({ { type = "recipe", name = "burner-assembling-machine", - category = "wood-processing-or-assembling", + category = crafting_category, enabled = false, ingredients = { { type = "item", name = "wooden-gear-wheel", amount = 5 }, @@ -109,11 +111,11 @@ if not basic_circuit_board then { type = "recipe", name = "burner-assembling-machine-electronic-circuit", - category = "wood-processing-or-assembling", + category = crafting_category, localised_name = { "entity-name.burner-assembling-machine" }, icons = { { icon = Lignumis.graphics .. "icons/burner-assembling-machine.png" }, - { 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 } } }, enabled = false, ingredients = { diff --git a/lignumis/prototypes/content/burner-long-handed-inserter.lua b/lignumis/prototypes/content/burner-long-handed-inserter.lua index 2e701aa..de8a785 100644 --- a/lignumis/prototypes/content/burner-long-handed-inserter.lua +++ b/lignumis/prototypes/content/burner-long-handed-inserter.lua @@ -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.order = "a-c-0" +local crafting_category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting" + data:extend({ long_handed_inserter, remnants, @@ -63,7 +65,7 @@ data:extend({ { type = "recipe", name = "burner-long-handed-inserter", - category = "wood-processing-or-assembling", + category = crafting_category, enabled = false, ingredients = { { type = "item", name = "wooden-gear-wheel", amount = 1 }, diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index 4db50fa..c8bf5a2 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -41,12 +41,14 @@ burner_inserter.energy_source.initial_fuel_percent = 0.15 data.raw.item["burner-inserter"].icon = Lignumis.graphics .. "icons/burner-inserter.png" -local burner_inesrter_recipe = data.raw.recipe["burner-inserter"] -burner_inesrter_recipe.ingredients = { +local burner_inserter_recipe = data.raw.recipe["burner-inserter"] +burner_inserter_recipe.ingredients = { { type = "item", name = "wooden-gear-wheel", amount = 1 }, { type = "item", name = "lumber", amount = 1 } } -burner_inesrter_recipe.category = "wood-processing-or-assembling" +if settings.startup["lignumis-lumber-mill-more-recipes"].value then + burner_inserter_recipe.category = "wood-processing-or-assembling" +end -- Stone furnace @@ -149,10 +151,11 @@ if settings.startup["lignumis-belt-progression"].value then end if settings.startup["lignumis-inserter-progression"].value then - table.insert( - data.raw.recipe["inserter"].ingredients, - { type = "item", name = "burner-inserter", amount = 1 } - ) + Recipe:new("inserter"):addIngredient("burner-inserter", 1) +end + +if settings.startup["lignumis-assembler-progression"].value then + Recipe:new("assembling-machine-1"):addIngredient("burner-assembling-machine", 1) end diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 47268af..3da6341 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -40,12 +40,28 @@ data:extend({ setting_type = "startup", default_value = false, order = "f" + }, + { + type = "bool-setting", + name = "lignumis-assembler-progression", + setting_type = "startup", + default_value = false, + order = "g" + }, + { + type = "bool-setting", + name = "lignumis-lumber-mill-more-recipes", + setting_type = "startup", + default_value = false, + order = "h" } }) if mods["aai-industry"] then data.raw["bool-setting"]["lignumis-inserter-progression"].forced_value = false data.raw["bool-setting"]["lignumis-inserter-progression"].hidden = true + data.raw["bool-setting"]["lignumis-assembler-progression"].forced_value = false + data.raw["bool-setting"]["lignumis-assembler-progression"].hidden = true end if mods["wood-military"] then From 86f8c55506ab521362c85586bf8082d740fee25c Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Mar 2025 18:46:05 +0100 Subject: [PATCH 031/150] Fix players after the first not attackable --- lignumis/migrations/lignumis-1.0.32.lua | 5 +++++ lignumis/scripts/init.lua | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 lignumis/migrations/lignumis-1.0.32.lua diff --git a/lignumis/migrations/lignumis-1.0.32.lua b/lignumis/migrations/lignumis-1.0.32.lua new file mode 100644 index 0000000..1ae2b0b --- /dev/null +++ b/lignumis/migrations/lignumis-1.0.32.lua @@ -0,0 +1,5 @@ +for _, player in pairs(game.players) do + if player.character then + player.character.destructible = true + end +end \ No newline at end of file diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index 24b5af4..69aab8e 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -27,7 +27,6 @@ local function init_player(event) if not player.character or not surface then return end player.teleport(surface.find_non_colliding_position("character", { 0, 0 }, 0, 1), "lignumis") - player.character.destructible = false local main_inventory = player.character.get_main_inventory() -- Add some starting items to player inventory @@ -149,9 +148,6 @@ Init.events[defines.events.on_cutscene_cancelled] = function(event) if player.gui.screen.skip_cutscene_label then player.gui.screen.skip_cutscene_label.destroy() end - if player.character then - player.character.destructible = true - end player.zoom = 1.5 end From b0ee9f94bc9c0d7b40c42b2520cf5d55a4f8fe3b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Mar 2025 18:50:18 +0100 Subject: [PATCH 032/150] 1.0.32 --- lignumis/changelog.txt | 11 +++++++++++ lignumis/info.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 830ccf3..fff33f1 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,15 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.32 +Date: 14.03.2025 + Breaking Changes: + - Some newly added recipes for the lumber mill have been moved to a setting that is off by default + Changes: + - Reduce noise + - Restrict provisional rocket silo to Lignumis + - Add setting for assembler recipe progression + Bug Fixes: + - Fix players after the first not attackable +--------------------------------------------------------------------------------------------------- Version: 1.0.31 Date: 13.03.2025 Breaking Changes: diff --git a/lignumis/info.json b/lignumis/info.json index bac495f..18bbc2a 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.31", + "version": "1.0.32", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 9edaf14f93834432b323d6c168914c2439e3d0db Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 15 Mar 2025 00:02:21 +0100 Subject: [PATCH 033/150] AAI Industry: Move copper cable recipe to copper processing --- lignumis/prototypes/compatibility/aai-industry.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index b4f27f3..c15276f 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -33,4 +33,7 @@ if settings.startup["lignumis-basic-circuit-board"].value then -- AAI Industry messes with the basic circuit board recipe Technology:new("electronics"):removeRecipe("basic-circuit-board") data.raw.recipe["basic-circuit-board"].enabled = true + + Technology:new("electricity"):removeRecipe("copper-cable") + Technology:new("copper-processing"):addRecipe("copper-cable") end \ No newline at end of file From fda2a82b5e3d5bb8d1474c32364483a5b0d62d07 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 15 Mar 2025 10:04:55 +0100 Subject: [PATCH 034/150] AAI Industry: Remove technology "Basic logistics" --- lignumis/prototypes/compatibility/aai-industry.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index c15276f..5fc7475 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -4,6 +4,8 @@ if not mods["aai-industry"] then return end data.raw.recipe["wood-science-pack"].allow_hand_crafting = true +-- Technologies / Recipe unlocks + local burner_mechanics = Technology:new("burner-mechanics") burner_mechanics:removeRecipe("burner-inserter") burner_mechanics:removeRecipe("burner-mining-drill") @@ -16,6 +18,11 @@ data.raw.recipe["burner-mining-drill"].enabled = true local burner_automation = Technology:new("burner-automation") burner_automation:addRecipe("burner-assembling-machine") +Technology:new("basic-logistics"):removeRecipe("transport-belt") +Technology:new("logistics"):addRecipe("transport-belt") + +-- Entities + local wall = data.raw["wall"]["concrete-wall"] wall.emissions_per_second = wall.emissions_per_second or {} wall.emissions_per_second.noise = -30 / 60 From 1e219ba4adf7ccdafee9a26740cde74ab37df7f4 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 15 Mar 2025 10:33:04 +0100 Subject: [PATCH 035/150] AAI Industry: Lumber mill copper recipe uses burner assembler instead of electrical assembler 1 --- lignumis/prototypes/compatibility/aai-industry.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index 5fc7475..e47048e 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -1,4 +1,5 @@ local Technology = require("__cf-lib__/data/Technology") +local Recipe = require("__cf-lib__/data/Recipe") if not mods["aai-industry"] then return end @@ -21,6 +22,9 @@ burner_automation:addRecipe("burner-assembling-machine") Technology:new("basic-logistics"):removeRecipe("transport-belt") Technology:new("logistics"):addRecipe("transport-belt") +-- Electric assembler comes later with AAI Industry active +Recipe:new("lumber-mill-copper"):replaceIngredient("assembling-machine-1", "burner-assembling-machine") + -- Entities local wall = data.raw["wall"]["concrete-wall"] From 70d22cb12188f10e2e5d353131d30eebcead35e4 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 15 Mar 2025 16:06:43 +0100 Subject: [PATCH 036/150] Replace iron gear weel with wooden gear weel in lumber mill copper recipe --- lignumis/prototypes/content/lumber-mill.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/lumber-mill.lua b/lignumis/prototypes/content/lumber-mill.lua index add1dd3..78da9a0 100644 --- a/lignumis/prototypes/content/lumber-mill.lua +++ b/lignumis/prototypes/content/lumber-mill.lua @@ -52,7 +52,7 @@ LumberMill.RecipeBuilder:new() :ingredients({ { type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "lumber", amount = 50 }, - { type = "item", name = "iron-gear-wheel", amount = 50 }, + { type = "item", name = "wooden-gear-wheel", amount = 50 }, { type = "item", name = "copper-plate", amount = basic_circuit_board and 30 or 60 }, { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 30 }, { type = "item", name = "assembling-machine-1", amount = 2 } From 12fdcbcb908d17f48770f52b227da790d4c1d048 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 00:04:39 +0100 Subject: [PATCH 037/150] AAI Industry: Basic construction robot copper recipe uses basic circuit board instead of electronic circuit --- lignumis/prototypes/compatibility/aai-industry.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index e47048e..0050a74 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -22,8 +22,9 @@ burner_automation:addRecipe("burner-assembling-machine") Technology:new("basic-logistics"):removeRecipe("transport-belt") Technology:new("logistics"):addRecipe("transport-belt") --- Electric assembler comes later with AAI Industry active +-- Electrics comes later with AAI Industry active Recipe:new("lumber-mill-copper"):replaceIngredient("assembling-machine-1", "burner-assembling-machine") +Recipe:new("basic-construction-robot-copper"):replaceIngredient("electronic-circuit", "basic-circuit-board") -- Entities From d35e86755a6f845d38d908de616f3fd80d8f1a13 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 00:05:23 +0100 Subject: [PATCH 038/150] Remove temporary fix for crash due to "Wood Walls and floors" --- lignumis/prototypes/integrations/Wood-Walls.lua | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lignumis/prototypes/integrations/Wood-Walls.lua b/lignumis/prototypes/integrations/Wood-Walls.lua index 782726a..d1f11d5 100644 --- a/lignumis/prototypes/integrations/Wood-Walls.lua +++ b/lignumis/prototypes/integrations/Wood-Walls.lua @@ -1,7 +1,4 @@ local recipe = data.raw.recipe["wooden-wall"] recipe.ingredients = { { type = "item", name = "lumber", amount = 4 } } recipe.results = { { type = "item", name = "wooden-wall", amount = 1 } } -recipe.category = "wood-processing-or-assembling" - --- https://mods.factorio.com/mod/Wood-Walls/discussion/679915cbb8bf3c84c65db404 -data.raw.corpse["woodenwall-remnants"].icon = "__Wood-Walls__/graphics/wooden-wall/wooden-wall.png" \ No newline at end of file +recipe.category = "wood-processing-or-assembling" \ No newline at end of file From 9b736073a3c2652c3e5400152e55fefd3157335a Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 10:45:08 +0100 Subject: [PATCH 039/150] Nerf basic portable generator from 200 kW to 100 kW --- lignumis/prototypes/content/basic-construction-robots.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lignumis/prototypes/content/basic-construction-robots.lua b/lignumis/prototypes/content/basic-construction-robots.lua index a9fd4bf..2fa4453 100644 --- a/lignumis/prototypes/content/basic-construction-robots.lua +++ b/lignumis/prototypes/content/basic-construction-robots.lua @@ -83,9 +83,10 @@ local function generator(color) energy_source = { type = "electric", usage_priority = "secondary-output", - output_flow_limit = "200kW" + output_flow_limit = "100kW", + buffer_capacity = "5MJ" }, - power = "200kW", + power = "100kW", categories = { "armor" } } end From aae06ac132934ab8c25204c4581c6768772c7856 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 18:51:59 +0100 Subject: [PATCH 040/150] AAI Loaders: Yellow loader uses basic circuit board instead of electronic circuit --- lignumis/prototypes/compatibility/aai-loaders-final.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/aai-loaders-final.lua b/lignumis/prototypes/compatibility/aai-loaders-final.lua index 1465a35..992d92d 100644 --- a/lignumis/prototypes/compatibility/aai-loaders-final.lua +++ b/lignumis/prototypes/compatibility/aai-loaders-final.lua @@ -2,4 +2,8 @@ local Recipe = require("__cf-lib__/data/Recipe") if not mods["aai-loaders"] then return end -Recipe:new("aai-loader"):replaceIngredient("transport-belt", "aai-wood-loader", 1) \ No newline at end of file +local recipe = Recipe:new("aai-loader"):replaceIngredient("transport-belt", "aai-wood-loader", 1) + +if settings.startup["lignumis-basic-circuit-board"].value then + recipe:replaceIngredient("electronic-circuit", "basic-circuit-board") +end \ No newline at end of file From 6f453071eadab71f6296843b376d4cdd607e109b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 18:52:17 +0100 Subject: [PATCH 041/150] Lane splitters: Yellow lane splitter uses basic circuit board instead of electronic circuit --- lignumis/prototypes/compatibility/lane-splitters.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lignumis/prototypes/compatibility/lane-splitters.lua b/lignumis/prototypes/compatibility/lane-splitters.lua index f61061a..c075538 100644 --- a/lignumis/prototypes/compatibility/lane-splitters.lua +++ b/lignumis/prototypes/compatibility/lane-splitters.lua @@ -1,3 +1,6 @@ +local Recipe = require("__cf-lib__/data/Recipe") +local Technology = require("__cf-lib__/data/Technology") + if not mods["lane-splitters"] then return end local lane_splitter = make_tier({ @@ -27,7 +30,8 @@ data:extend({ lane_splitter.recipe, }) -table.insert(data.raw["technology"]["wood-logistics"].effects, { - type = "unlock-recipe", - recipe = "wood-lane-splitter" -}) \ No newline at end of file +Technology:new("wood-logistics"):addRecipe("wood-lane-splitter") + +if settings.startup["lignumis-basic-circuit-board"].value then + Recipe:new("lane-splitter"):replaceIngredient("electronic-circuit", "basic-circuit-board") +end \ No newline at end of file From d1b780636e74e3c13af70884ec1633516947a072 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 18:52:44 +0100 Subject: [PATCH 042/150] AAI Loaders: Reduce basic circuit boards to match other tiers --- lignumis/prototypes/compatibility/aai-loaders.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/aai-loaders.lua b/lignumis/prototypes/compatibility/aai-loaders.lua index 4a89171..ec9353a 100644 --- a/lignumis/prototypes/compatibility/aai-loaders.lua +++ b/lignumis/prototypes/compatibility/aai-loaders.lua @@ -8,7 +8,7 @@ local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].val local recipe = { ingredients = { { type = "item", name = "lumber", amount = 5 }, - basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 10 } or + basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or { type = "item", name = "gold-cable", amount = 10 }, { type = "item", name = "wood-transport-belt", amount = 1 } }, From 981c74aa73f3e8aeaf1f90112800634b347cb5dc Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 22:23:00 +0100 Subject: [PATCH 043/150] 1.0.33 --- lignumis/changelog.txt | 15 +++++++++++++++ lignumis/info.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index fff33f1..82614d7 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,19 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.33 +Date: 14.03.2025 + Breaking Changes: + - Replace iron gear wheel with wooden gear wheel in lumber mill copper recipe + - AAI Industry: Lumber mill copper recipe uses burner assembler instead of electrical assembler 1 + - AAI Industry: Basic construction robot copper recipe uses basic circuit board instead of electronic circuit + - AAI Loaders: Yellow loader uses basic circuit board instead of electronic circuit + - Lane splitters: Yellow lane splitter uses basic circuit board instead of electronic circuit + Changes: + - Nerf basic portable generator from 200 kW to 100 kW + - AAI Industry: Move copper cable recipe to copper processing + - AAI Industry: Remove technology "Basic logistics" + - AAI Loaders: Reduce basic circuit boards to match other tiers + - Remove temporary fix for crash due to "Wood Walls and floors" +--------------------------------------------------------------------------------------------------- Version: 1.0.32 Date: 14.03.2025 Breaking Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 18bbc2a..a02d448 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.32", + "version": "1.0.33", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From b2b992af5b25155e10705a647aa1dcb51c920264 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 16 Mar 2025 22:24:16 +0100 Subject: [PATCH 044/150] Corect Date --- lignumis/changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 82614d7..0d751c3 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,6 +1,6 @@ --------------------------------------------------------------------------------------------------- Version: 1.0.33 -Date: 14.03.2025 +Date: 16.03.2025 Breaking Changes: - Replace iron gear wheel with wooden gear wheel in lumber mill copper recipe - AAI Industry: Lumber mill copper recipe uses burner assembler instead of electrical assembler 1 From 8982b1bf8262441ee562a6e06fc77f438f51f24c Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 17 Mar 2025 17:15:04 +0100 Subject: [PATCH 045/150] Balance basic construction robots --- lignumis/prototypes/content/basic-construction-robots.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/basic-construction-robots.lua b/lignumis/prototypes/content/basic-construction-robots.lua index 2fa4453..7959bd5 100644 --- a/lignumis/prototypes/content/basic-construction-robots.lua +++ b/lignumis/prototypes/content/basic-construction-robots.lua @@ -10,7 +10,9 @@ local function robot(color) result.minable.result = "basic-construction-robot-" .. color result.max_health = 50 result.speed = 0.04 - result.max_energy = "2MJ" + result.max_energy = "1MJ" + result.energy_per_tick = "0.04kJ" + result.energy_per_move = "0.3kJ" result.idle.filename = Lignumis.graphics .. "entity/basic-construction-robot/basic-construction-robot-" .. color .. ".png" result.in_motion.filename = Lignumis.graphics .. "entity/basic-construction-robot/basic-construction-robot-" .. From ac60c67999882f2d441e7614474d9d100f9c37dd Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 17 Mar 2025 18:01:15 +0100 Subject: [PATCH 046/150] Make the second planet after Lignumis configurable by other mods --- README.md | 12 ++++++++++++ lignumis/scripts/init-new.lua | 2 +- lignumis/scripts/init.lua | 4 +++- lignumis/scripts/to-nauvis.lua | 9 +++++---- lignumis/settings.lua | 8 ++++++++ 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7292cea..d8c6fd1 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,18 @@ Don't touch inputs for labs in this list. Lignumis adds wood and steam science packs to all labs' inputs in `data-updates.lua` so modded labs will support them. If your modded lab is special and it should not support these science packs, use this list or set the inputs in `data-final-fixes.lua`. +#### Chaning the second planet (a.k.a. transition to Nauvis) + +If you want to create a mod that moves Lignumis to another planet, there is a hidden setting for the scripted transition to teleport the player not to Nauvis but to any planet you like. +This doesn't change any technologies or the location of Lignumis on the map. Make sure you adjust the prototypes as well on your end. + +In `settings-updates.lua` add the following to switch to Gleba as the second planet: + +```lua +data.raw["string-setting"]["lignumis-second-planet"].allowed_values = { "gleba" } +data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" +``` + ## Todo - Fix pipe graphics on desiccation furnace and quality assembler diff --git a/lignumis/scripts/init-new.lua b/lignumis/scripts/init-new.lua index efe1a07..f81bf46 100644 --- a/lignumis/scripts/init-new.lua +++ b/lignumis/scripts/init-new.lua @@ -33,7 +33,7 @@ end local function init_space_locations() local force = game.forces.player force.technologies["planet-discovery-lignumis"].researched = true - if not force.technologies["planet-discovery-nauvis"].researched then + if game.planets["nauvis"] and force.technologies["planet-discovery-nauvis"] and not force.technologies["planet-discovery-nauvis"].researched then force.lock_space_location("nauvis") end end diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index 69aab8e..1ff844b 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -7,6 +7,8 @@ local Init = { events = {} } +local target_planet = settings.global["lignumis-second-planet"].value or "nauvis" + -- Migrate storage init as it was just a boolean before not supporting multiple players local function migrate_0_9_6(event) @@ -94,7 +96,7 @@ Init.events[defines.events.on_player_changed_surface] = function(event) if player.controller_type ~= defines.controllers.character then return end - if player and player.surface.name == "nauvis" then + if player and player.surface.name == target_planet then storage.nauvis_visited = true end diff --git a/lignumis/scripts/to-nauvis.lua b/lignumis/scripts/to-nauvis.lua index c2b3bc3..c8dd0e6 100644 --- a/lignumis/scripts/to-nauvis.lua +++ b/lignumis/scripts/to-nauvis.lua @@ -6,6 +6,7 @@ local ToNauvis = { events = {} } +local target_planet = settings.global["lignumis-second-planet"].value or "nauvis" -- Chart the starting area for the player local function chart_starting_area(surface, player) @@ -19,7 +20,7 @@ end -- Initialize Nauvis local function init_nauvis() if storage.nauvis_visited then return end - local nauvis = game.planets["nauvis"].create_surface() + local nauvis = game.planets[target_planet].create_surface() nauvis.request_to_generate_chunks({ 0, 0 }, 3) nauvis.force_generate_chunk_requests() nauvis.daytime = 0.7 @@ -28,10 +29,10 @@ end -- Teleport player to Nauvis and show welcome message local function teleport_player(player) - local nauvis = game.planets["nauvis"].surface + local nauvis = game.planets[target_planet].surface if player.surface.name == "lignumis" then local position = nauvis.find_non_colliding_position("character", { 0, 0 }, 100, 1) or { 0, 0 } - player.teleport(position, "nauvis") + player.teleport(position, target_planet) chart_starting_area(nauvis, player) player.print("Oh no, not again. But... Welcome to Nauvis!") end @@ -44,7 +45,7 @@ local function init_freeplay() if not remote.interfaces.freeplay then return end storage.crashed_ship_nauvis = true - local nauvis = game.planets["nauvis"].surface + local nauvis = game.planets[target_planet].surface local ship_items = { ["burner-mining-drill"] = 2, ["stone-furnace"] = 2, diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 3da6341..d23e183 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -54,6 +54,14 @@ data:extend({ setting_type = "startup", default_value = false, order = "h" + }, + { + type = "string-setting", + name = "lignumis-second-planet", + setting_type = "runtime-global", + allowed_values = { "nauvis" }, + default_value = "nauvis", + hidden = true } }) From a546b14d099a0cac61e5f0408d58664c2cf7b11b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Feb 2025 16:19:22 +0100 Subject: [PATCH 047/150] Add new enemies --- lignumis/locale/en/strings.cfg | 6 + lignumis/prototypes/content/data.lua | 1 + lignumis/prototypes/content/enemies.lua | 545 ++++++++++++++++++ .../content/lignumis/autoplace-controls.lua | 14 +- .../prototypes/content/lignumis/mapgen.lua | 2 +- .../icons/lignumis-medium-wriggler-corpse.png | Bin 0 -> 8850 bytes sources/icons/lignumis-medium-wriggler.png | Bin 0 -> 9699 bytes .../icons/lignumis-small-wriggler-corpse.png | Bin 0 -> 7055 bytes sources/icons/lignumis-small-wriggler.png | Bin 0 -> 7623 bytes 9 files changed, 564 insertions(+), 4 deletions(-) create mode 100644 lignumis/prototypes/content/enemies.lua create mode 100644 sources/icons/lignumis-medium-wriggler-corpse.png create mode 100644 sources/icons/lignumis-medium-wriggler.png create mode 100644 sources/icons/lignumis-small-wriggler-corpse.png create mode 100644 sources/icons/lignumis-small-wriggler.png diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 5832cad..37064fc 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -46,6 +46,9 @@ active-noise-cancelling-tower=Active noise cancelling tower quality-assembler=Quality assembler aai-wood-loader=Wood loader wood-lane-splitter=Wood lane splitter +lignumis-spawner-small=Lignumis egg raft +lignumis-small-wriggler-pentapod=Lignumis small wiggler pentapod +lignumis-medium-wriggler-pentapod=Lignumis medium wiggler pentapod [entity-description] lumber-mill=Advanced machine to process wood. @@ -182,6 +185,9 @@ lignumis-circuit-progression=Electric circuits will require basic circuit boards lignumis-assembler-progression=Assembling machine 1 will require burner assembling machines to craft. lignumis-lumber-mill-more-recipes=The lumber mill can also craft basic turrets, burner assemblers and burner inserters. Improves balancing wood usage when all progressive recipes are enabled and helps with marathon games. +[autoplace-control-names] +lignumis_enemy_base=Lignumis enemy bases + [entity-status] no-quality-catalyst=No quality catalyst diff --git a/lignumis/prototypes/content/data.lua b/lignumis/prototypes/content/data.lua index 1b232af..d3867e7 100644 --- a/lignumis/prototypes/content/data.lua +++ b/lignumis/prototypes/content/data.lua @@ -30,5 +30,6 @@ require("quality-assembler") require("decoratives") require("wood-military") require("basic-circuit-board") +require("enemies") require("noise") diff --git a/lignumis/prototypes/content/enemies.lua b/lignumis/prototypes/content/enemies.lua new file mode 100644 index 0000000..76d76d8 --- /dev/null +++ b/lignumis/prototypes/content/enemies.lua @@ -0,0 +1,545 @@ +local particle_animations = require("__space-age__/prototypes/particle-animations") +local base_sounds = require("__base__.prototypes.entity.sounds") +local space_age_sounds = require("__space-age__.prototypes.entity.sounds") +local simulations = require("__space-age__.prototypes.factoriopedia-simulations") +local biter_ai_settings = require("__base__.prototypes.entity.biter-ai-settings") + +local blood_particles = { + "blood-particle-small", +} + +for _, particle_name in ipairs(blood_particles) do + local new_particle = table.deepcopy(data.raw["optimized-particle"][particle_name]) + local scale = new_particle.pictures.sheet.scale + local shift = new_particle.pictures.sheet.shift + new_particle.name = "lignumis-" .. particle_name + new_particle.pictures = { + sheet = { + filename = "__space-age__/graphics/particle/gleba-blood-particle/gleba-blood-particle.png", + line_length = 12, + width = 32, + height = 24, + frame_count = 12, + variation_count = 7, + scale = scale * 0.25, + shift = shift + } + } + data:extend({ new_particle }) +end + +function gleba_hit_effects(offset_deviation, offset) + local offset = offset or { 0, 0 } + return { + type = "create-entity", + entity_name = "gleba-enemy-damaged-explosion", + offset_deviation = offset_deviation or { { -0.5, -0.5 }, { 0.5, 0.5 } }, + offsets = { offset }, + damage_type_filters = "fire" + } +end + +function wriggler_spritesheet(name, frames, speed, scale, tint, flag) + speed = speed or 1.0 + local is_shadow = string.sub(name, -string.len("-shadow")) == "-shadow" + local is_decay = string.find(name, "decay") + if is_decay and is_shadow then return nil end + return util.sprite_load("__space-age__/graphics/entity/wriggler/wriggler-" .. name, + { + slice = 5, + frame_count = frames, + direction_count = 16, + scale = 0.5 * 1.2 * scale, + multiply_shift = scale, + animation_speed = speed, + draw_as_shadow = is_shadow, + tint_as_overlay = tint and true or nil, + tint = tint, + flags = (not is_shadow) and { flag } or nil, + surface = "gleba", + usage = "enemy" + } + ) +end + +function wriggler_corpse_spritesheet(name, frames, speed, scale, tint) + return wriggler_spritesheet(name, frames, speed, scale, tint, "corpse-decay") +end + +local default_ended_in_water_trigger_effect = function() + return { + { + type = "create-particle", + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "tintable-water-particle", + apply_tile_tint = "secondary", + offset_deviation = { { -0.05, -0.05 }, { 0.05, 0.05 } }, + initial_height = 0, + initial_height_deviation = 0.02, + initial_vertical_speed = 0.05, + initial_vertical_speed_deviation = 0.05, + speed_from_center = 0.01, + speed_from_center_deviation = 0.006, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 2, + tail_length_deviation = 1, + tail_width = 3 + }, + { + type = "create-particle", + repeat_count = 10, + repeat_count_deviation = 6, + probability = 0.03, + affects_target = false, + show_in_tooltip = false, + particle_name = "tintable-water-particle", + apply_tile_tint = "primary", + offsets = { + { 0, 0 }, + { 0.01563, -0.09375 }, + { 0.0625, 0.09375 }, + { -0.1094, 0.0625 } + }, + offset_deviation = { { -0.2969, -0.1992 }, { 0.2969, 0.1992 } }, + initial_height = 0, + initial_height_deviation = 0.02, + initial_vertical_speed = 0.053, + initial_vertical_speed_deviation = 0.005, + speed_from_center = 0.02, + speed_from_center_deviation = 0.006, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 9, + tail_length_deviation = 0, + tail_width = 1 + }, + { + type = "play-sound", + sound = base_sounds.small_splash + } + } +end + +local make_particle = function(params) + if not params then error("No params given to make_particle function") end + local name = params.name or error("No name given") + + local ended_in_water_trigger_effect = params.ended_in_water_trigger_effect or default_ended_in_water_trigger_effect() + if params.ended_in_water_trigger_effect == false then + ended_in_water_trigger_effect = nil + end + + local particle = { + type = "optimized-particle", + name = name, + life_time = params.life_time or (60 * 15), + fade_away_duration = params.fade_away_duration, + render_layer = params.render_layer or "projectile", + render_layer_when_on_ground = params.render_layer_when_on_ground or "corpse", + regular_trigger_effect_frequency = params.regular_trigger_effect_frequency or 2, + regular_trigger_effect = params.regular_trigger_effect, + ended_in_water_trigger_effect = ended_in_water_trigger_effect, + pictures = params.pictures, + shadows = params.shadows, + draw_shadow_when_on_ground = params.draw_shadow_when_on_ground, + movement_modifier_when_on_ground = params.movement_modifier_when_on_ground, + movement_modifier = params.movement_modifier, + vertical_acceleration = params.vertical_acceleration, + mining_particle_frame_speed = params.mining_particle_frame_speed, + } + return particle +end + +local function lerp_color(a, b, amount) + return { + a[1] + amount * (b[1] - a[1]), + a[2] + amount * (b[2] - a[2]), + a[3] + amount * (b[3] - a[3]), + a[4] + amount * (b[4] - a[4]), + } +end + +function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simulation, factoriopedia_simulation_premature, + sounds) + -- Premature version loses health so that the swarm will get removed (more efficient). + -- Spawner-spawned versions are stable so that the area is not full of corpses. + local tint_mask = tints.mask + local tint_body = tints.body + + local function attack_parameters() + local cooldown = 26 + return { + ammo_category = "melee", + ammo_type = { + target_type = "entity", + action = { + type = "direct", + action_delivery = { + type = "instant", + target_effects = { + { + type = "damage", + damage = { amount = 5 * damage, type = "physical" } + } + } + } + } + }, + animation = { + layers = { + wriggler_spritesheet("attack", 19, 0.48, scale, tint_body), + wriggler_spritesheet("attack-tint", 19, 0.48, scale, tint_mask), + wriggler_spritesheet("attack-shadow", 19, 0.48, scale), + } + }, + cooldown = cooldown, + cooldown_deviation = 0.1, + range = 1.8 * scale, + range_mode = "bounding-box-to-bounding-box", + sound = sounds.attack_sound, + type = "projectile" + } + end + + local wriggler = { + type = "unit", + name = prefix .. "wriggler-pentapod-premature", + icon = Lignumis.graphics .. "icons/" .. prefix .. "wriggler.png", + subgroup = "enemies", + order = "gleba-a-wriggler-" .. tostring(scale), + factoriopedia_simulation = factoriopedia_simulation_premature, + collision_box = { { -0.2 * scale, -0.2 * scale }, { 0.2 * scale, 0.2 * scale } }, + sticker_box = { { -0.5 * scale, -0.5 * scale }, { 0.5 * scale, 0.5 * scale } }, + selection_box = { { -0.9 * scale, -0.9 * scale }, { 0.9 * scale, 0.9 * scale } }, + collision_mask = { layers = { player = true, train = true, is_object = true }, not_colliding_with_itself = true }, + flags = { "placeable-player", "placeable-enemy", "placeable-off-grid", "not-repairable", "breaths-air" }, + absorptions_to_join_attack = { noise = 1 }, + ai_settings = biter_ai_settings, + attack_parameters = attack_parameters(), + corpse = prefix .. "wriggler-pentapod-corpse", + damaged_trigger_effect = gleba_hit_effects(), + distance_per_frame = 0.125, + distraction_cooldown = 300, + dying_explosion = prefix .. "wriggler-die", + dying_sound = sounds.dying_sound, + healing_per_tick = -health / 1 / 60, + impact_category = "organic", + max_health = health, + max_pursue_distance = 30, + min_pursue_time = 300, + movement_speed = 0.15 * (1 + (scale - 1) / 2), + run_animation = { + layers = { + wriggler_spritesheet("run", 21, 0.48, scale, tint_body), + wriggler_spritesheet("run-tint", 21, 0.48, scale, tint_mask), + wriggler_spritesheet("run-shadow", 21, 0.48, scale), + } + }, + running_sound_animation_positions = { 2 }, + vision_distance = 20, + water_reflection = { + orientation_to_variation = false, + rotate = true, + pictures = { + filename = "__base__/graphics/entity/biter/biter-reflection.png", + height = 28, + priority = "extra-high", + scale = 2.5 * scale, + shift = { 0.15625, 0.46875 }, + variation_count = 1, + width = 20 + } + }, + walking_sound = sounds.walking_sound, + working_sound = sounds.working_sound, + warcry = sounds.warcry, + } + + local wriggler_stable = table.deepcopy(wriggler) + wriggler_stable.name = prefix .. "wriggler-pentapod" + wriggler_stable.factoriopedia_simulation = factoriopedia_simulation + wriggler_stable.healing_per_tick = health / 500 / 60 + wriggler_stable.absorptions_to_join_attack = { noise = 1 } + wriggler_stable.attack_parameters = attack_parameters() + + local wriggler_corpse = { + type = "corpse", + name = prefix .. "wriggler-pentapod-corpse", + icon = Lignumis.graphics .. "icons/" .. prefix .. "wriggler-corpse.png", + subgroup = "corpses", + order = "c[corpse]-d[gleba-enemies-corpses]-d[wriggler]" .. tostring(scale), + hidden_in_factoriopedia = true, + selection_box = { { -0.8, -0.8 }, { 0.8, 0.8 } }, + selectable_in_game = false, + animation = { + layers = { + wriggler_corpse_spritesheet("death", 17, 0.48, scale, tint_body), + wriggler_corpse_spritesheet("death-tint", 17, 0.48, scale, tint_mask), + wriggler_corpse_spritesheet("death-shadow", 17, 0.48, scale), + } + }, + decay_animation = { + layers = { + wriggler_corpse_spritesheet("decay", 9, nil, scale, tint_body), + wriggler_corpse_spritesheet("decay-tint", 9, nil, scale, tint_mask), + wriggler_corpse_spritesheet("decay-shadow", 9, nil, scale), + } + }, + dying_speed = 0.015 / scale, + decay_frame_transition_duration = 150, + time_before_removed = 1 * 60 * 60, -- 1 minute + use_decay_layer = true, + + direction_shuffle = { { 1, 2, 3, 16 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }, + shuffle_directions_at_frame = 0, + final_render_layer = "lower-object-above-shadow", + flags = { + "placeable-neutral", + "placeable-off-grid", + "building-direction-8-way", + "not-repairable", + "not-on-map" + }, + ground_patch = { + sheet = + util.sprite_load("__space-age__/graphics/entity/wriggler/blood-puddle-var-main", + { + flags = { "low-object" }, + variation_count = 4, + scale = 0.4 * scale, + multiply_shift = 0.125, + } + ) + }, + ground_patch_fade_in_delay = 20, + ground_patch_fade_in_speed = 0.002, + ground_patch_fade_out_duration = 50 * 60 / 7.5, + ground_patch_fade_out_start = 50 * 60 / 7.5, + ground_patch_render_layer = "decals" + } + + local wrigger_explosion = { + type = "explosion", + name = prefix .. "wriggler-die", + scale = 0.25, + icon = "__space-age__/graphics/icons/medium-wriggler-corpse.png", + order = "a[corpse]-f[wriggler]", + flags = { "not-on-map" }, + hidden = true, + subgroup = "enemy-death-explosions", + animations = util.empty_sprite(), + created_effect = { + type = "direct", + action_delivery = { + type = "instant", + target_effects = { + { + type = "create-particle", + repeat_count = 13, + repeat_count_deviation = 1, + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "lignumis-blood-particle-small", + offsets = { { 0, 0 } }, + offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + initial_height = 0.1, + initial_height_deviation = 0.1, + initial_vertical_speed = 0.009, + initial_vertical_speed_deviation = 0.009, + speed_from_center = 0.05, + speed_from_center_deviation = 0.05, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 5, + tail_length_deviation = 5, + tail_width = 3, + rotate_offsets = false + }, + { + type = "create-particle", + repeat_count = 12, + repeat_count_deviation = 3, + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "lignumis-blood-particle-small", + offsets = { + { 0, -0.4 }, + { 0, 0.5 }, + { 0, 0.6 } + }, + offset_deviation = { { -0.25, -0.25 }, { 0.25, 0.25 } }, + initial_height = 0.1, + initial_height_deviation = 0.1, + initial_vertical_speed = 0.055, + initial_vertical_speed_deviation = 0.075, + speed_from_center = 0.03, + speed_from_center_deviation = 0.03, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 52, + tail_length_deviation = 25, + tail_width = 3, + rotate_offsets = false + }, + { + type = "play-sound", + sound = base_sounds.medium_gore + }, + } + } + } + } + + data:extend { + --wriggler, + wriggler_stable, + wriggler_corpse, + wrigger_explosion, + make_particle + { + name = prefix .. "wriggler-skin-particle", + life_time = 300, + pictures = particle_animations.get_pentpod_skin_particles_small({ scale = 1 * scale, tint = lerp_color(tint_mask, { 255, 255, 255, 255 }, 0.7) }), + shadows = particle_animations.get_pentpod_skin_particles_small({ scale = 1 * scale, tint = shadowtint(), shift = util.by_pixel(1, 0) }), + ended_in_water_trigger_effect = default_ended_in_water_trigger_effect(), + render_layer_when_on_ground = "lower-object-above-shadow" + }, + } +end + +local function fade(tint, amount) -- fades to minimal opacity grey. Low opacity is good for the mask to let the base layer show htough (instead of having a grey mask) + return lerp_color(tint, { 1, 1, 1, 2 }, amount) +end + +local function grey_overlay(tint, amount) -- fades to opaque grey. Full opacity is required for body. + return lerp_color(tint, { 127, 127, 127, 255 }, amount) +end + +-- mask tint is vibrant and only on the mask +-- body tint applies to the whole body and should be near 127 grey, just adds a hint of saturation +local gleba_small_mask_tint = { 103, 151, 11, 255 } +local gleba_small_body_tint = { 125, 124, 111, 255 } + +make_wriggler("lignumis-small-", 0.2, 10, 0.1, + { + mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.2), 0.2), + body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.2), 0.2) + }, + simulations.factoriopedia_gleba_enemy_small_wriggler, + simulations.factoriopedia_gleba_enemy_small_wriggler_premature, + space_age_sounds.wriggler_pentapod.small +) + +make_wriggler("lignumis-medium-", 0.4, 20, 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) + }, + simulations.factoriopedia_gleba_enemy_small_wriggler, + simulations.factoriopedia_gleba_enemy_small_wriggler_premature, + space_age_sounds.wriggler_pentapod.small +) + +data:extend({ + { + type = "noise-expression", + name = "enemy_lignumis_intensity", + -- biter placement stops increasing in "intensity" after 75 chunks (2400 tiles) + expression = "clamp(distance, 0, 2400) / 325" + }, + { + type = "noise-expression", + name = "enemy_lignumis_radius", + expression = "sqrt(var('control:lignumis_enemy_base:size')) * (15 + 4 * enemy_lignumis_intensity)" + }, + { + type = "noise-expression", + name = "enemy_lignumis_frequency", + -- bases_per_km2 = 10 + 3 * enemy_lignumis_intensity + expression = "(0.00001 + 0.000003 * enemy_lignumis_intensity) * var('control:lignumis_enemy_base:frequency')" + }, + { + type = "noise-expression", + name = "enemy_lignumis_probability", + expression = "spot_noise{x = x,\z + y = y,\z + density_expression = spot_quantity_expression * max(0, enemy_lignumis_frequency),\z + spot_quantity_expression = spot_quantity_expression,\z + spot_radius_expression = spot_radius_expression,\z + spot_favorability_expression = 1,\z + seed0 = map_seed,\z + seed1 = 123,\z + region_size = 512,\z + candidate_point_count = 100,\z + hard_region_target_quantity = 0,\z + basement_value = -1000,\z + maximum_spot_basement_radius = 128} + \z + (blob(1/8, 1) + blob(1/24, 1) + blob(1/64, 2) - 0.5) * spot_radius_expression / 150 * \z + (0.1 + 0.9 * clamp(distance / 3000, 0, 1)) - 0.3 + min(0, 20 / starting_area_radius * distance - 20)", + local_expressions = + { + spot_radius_expression = "max(0, enemy_lignumis_radius)", + spot_quantity_expression = "pi/90 * spot_radius_expression ^ 3" + }, + local_functions = + { + blob = + { + parameters = { "input_scale", "output_scale" }, + expression = + "basis_noise{x = x, y = y, seed0 = map_seed, seed1 = 123, input_scale = input_scale, output_scale = output_scale}" + } + } + }, + { + type = "noise-function", + name = "enemy_autoplace_lignumis", + parameters = { "distance_factor", "seed" }, + expression = "random_penalty{x = x + seed,\z + y = y,\z + source = min(enemy_lignumis_probability * max(0, 1 + 0.002 * distance_factor * (-312 * distance_factor - starting_area_radius + distance)),\z + 0.25 + distance_factor * 0.05),\z + amplitude = 0.1}" + } +}) + +local function lignumis_spawner_autoplace(probability_expression, order) + return { + control = "lignumis_enemy_base", + order = order, + force = "enemy", + probability_expression = probability_expression, + richness_expression = 1 + } +end + +local spawner = table.deepcopy(data.raw["unit-spawner"]["gleba-spawner-small"]) +table.assign(spawner, { + name = "lignumis-spawner-small", + result_units = { + { "lignumis-small-wriggler-pentapod", { { 0.0, 0.9 }, { 0.5, 0.9 }, { 0.6, 0.5 } } }, + { "lignumis-medium-wriggler-pentapod", { { 0.1, 0 }, { 0.4, 0 }, { 1, 0.9 } } } + }, + max_count_of_owned_units = 7, + max_friends_around_to_spawn = 5, + spawning_spacing = 3, + max_spawn_shift = 0, + max_richness_for_spawn_shift = 100, + resistances = {}, + healing_per_tick = 1 / 60, + spawning_cooldown = { 60, 20 }, + spawning_radius = 4, + call_for_help_radius = 20, + autoplace = lignumis_spawner_autoplace("enemy_autoplace_lignumis(0, 548)", "b[enemy]-0[spawner]"), + absorptions_per_second = { noise = { absolute = 40, proportional = 0.01 } }, +}) +spawner.collision_mask = nil +spawner.loot = nil +spawner.dying_trigger_effect[1].entity_name = "lignumis-small-wriggler-pentapod" + +data:extend({ spawner }) diff --git a/lignumis/prototypes/content/lignumis/autoplace-controls.lua b/lignumis/prototypes/content/lignumis/autoplace-controls.lua index 418318b..7d30daf 100644 --- a/lignumis/prototypes/content/lignumis/autoplace-controls.lua +++ b/lignumis/prototypes/content/lignumis/autoplace-controls.lua @@ -7,7 +7,7 @@ data:extend({ { type = "autoplace-control", name = "lignumis_gold", - localised_name = {"", "[entity=gold-patch] ", {"entity-name.gold-patch"}}, + localised_name = { "", "[entity=gold-patch] ", { "entity-name.gold-patch" } }, richness = true, order = "0-b", category = "resource" @@ -15,9 +15,17 @@ data:extend({ { type = "autoplace-control", name = "lignumis_peat", - localised_name = {"", "[entity=peat] ", {"entity-name.peat"}}, + localised_name = { "", "[entity=peat] ", { "entity-name.peat" } }, richness = true, order = "0-c", category = "resource" + }, + { + type = "autoplace-control", + name = "lignumis_enemy_base", + richness = false, + order = "0-a", + category = "enemy", + can_be_disabled = true } -}) \ No newline at end of file +}) diff --git a/lignumis/prototypes/content/lignumis/mapgen.lua b/lignumis/prototypes/content/lignumis/mapgen.lua index c757597..570d274 100644 --- a/lignumis/prototypes/content/lignumis/mapgen.lua +++ b/lignumis/prototypes/content/lignumis/mapgen.lua @@ -17,7 +17,7 @@ return { ["stone"] = { richness = 1/6, frequency = 4, size = 4 }, ["water"] = {}, ["trees"] = { richness = 3, frequency = 4, size = 3 }, - ["enemy-base"] = {}, + ["lignumis_enemy_base"] = { frequency = 0.75, size = 0.75 }, ["rocks"] = {}, ["starting_area_moisture"] = { size = 1, richness = 6 }, ["nauvis_cliff"] = { frequency = 2, size = 2 } diff --git a/sources/icons/lignumis-medium-wriggler-corpse.png b/sources/icons/lignumis-medium-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..4d78edf05b6d12a11904e699f3a88c37e67048e4 GIT binary patch literal 8850 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 U%w4B_B>(^b07*qoM6N<$g1uyX$^ZZW literal 0 HcmV?d00001 diff --git a/sources/icons/lignumis-medium-wriggler.png b/sources/icons/lignumis-medium-wriggler.png new file mode 100644 index 0000000000000000000000000000000000000000..55fd48b0bbe767696b77eddbc7f356ccf016c9ed GIT binary patch literal 9699 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%0D2Cmi2M7qB*P;a*ip6cylarHfozla48lk6 zwu$g{7w+BKEZ$ueNeM!oN2J$f0<@_R3Xnulsakn`ixZ9y#*Hde*RLq4tqoQpo@~g9`~VD(_3xKP z&uUXZ>?5_sq2(Nx&8=Lj?`Q@+c6K#}M^>O_cRVf3c7eN}cIfZODU&}6+&CPKrA0*9 zpZk~}e11!S+n3kk`Hqc<$&C~cPc~$t@XKe98gzHmm_NQCM5cZyZ?!);G?0w3)A^GA zfo0fU5k(7goZ%Fy87?FE_eJhfxbX>{p8bw%YPW`s6t9cE@$B}(cw#1DYAyHC$3pBl z;<(}DrF4vrtrT~6XVd%YG9k)yfoHT<@b4q|=SwLW5*A13Wo3nPXVQ9@e7t#EStPr@ z-7=}~Tq-WTR7wquEu{~(r9)KUL|cW;_WI*gin4P!NO_g`@e;gkzeDK2$#jgLFQbng zTSM11#vv@n<_nX6x!P0ZRitFg1pzWl>9G)%`@9QBPcOyTaG9j*P!YYOG8z7hxqr8e z&{QJ`c};iPTX1!wpl0+$5eE9!i#rY!NLD=^PV<+UUX~Usq3>t` zwR5{rlCqo+-&NM-@`C*nV7(O$fv)X`qUj4mdGyHOQaV4IPe-ow`jGA=OvT#pA7)MB=_Co+K^935!-c?Uh^ald;xj44-g*<&(GK@$q$caq}jEUc6lY z3x{})vGg-?>z$U6iNuSGiP@KjR6hOqk|zE-#Jt~F!9?EEYTG6(TrPQ?u8^IxIM_MI z>Fv`>)a^ln9^FfzXgTp!SSs64ZoShSz(exhzZS3upYrjy^PF#o_7IXy&nS01?3a@} zT_HQ3|Hf*YPhaPM|HUmQy03~!byqV{`JATUVcuBoo~M2E+}G$O`s{kZxA$&_&<#Zd z)myD`;L4R;1^Ea)L4U${bJ!#A#@K?Z`Eg3w{PZ%md}N-WD4HatudTDj`-MN8Oe5b7 l_(Zzv%Cf{c@;P_v@NdKHU5-s+`GWue002ovPDHLkV1j%TBK80P literal 0 HcmV?d00001 diff --git a/sources/icons/lignumis-small-wriggler-corpse.png b/sources/icons/lignumis-small-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..532e60dedf236cabb43d69b401aa97260f582323 GIT binary patch literal 7055 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 literal 0 HcmV?d00001 From a60a63135b033562f7161e2b728a5c848afeed46 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 17 Mar 2025 21:40:45 +0100 Subject: [PATCH 048/150] Make Burner leech fork mandatory --- lignumis/info.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lignumis/info.json b/lignumis/info.json index a02d448..06e1405 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -20,6 +20,7 @@ "Wood-Walls >= 1.2.0", "pollution-as-surface-property", "bioprocessing-tab", + "Burner-Leech-Fork", "?hot-metals >= 1.1.0", "?wood-military >= 2.3.3", "?metal-and-stars", From 21875da7b1e55837c21cba99d1aca34d0a4c18a0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 17 Mar 2025 21:36:37 +0100 Subject: [PATCH 049/150] 1.0.34 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 0d751c3..b383343 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.34 +Date: 17.03.2025 + Changes: + - Balance basic construction robots (reduced energy buffer and usage) + - Make the second planet after Lignumis configurable by other mods + - Add new enemies (only for new games) + - Burner leech fork is now a mandatory dependency +--------------------------------------------------------------------------------------------------- Version: 1.0.33 Date: 16.03.2025 Breaking Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 06e1405..2b2788f 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.33", + "version": "1.0.34", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", @@ -9,7 +9,7 @@ "dependencies": [ "base", "space-age >= 2.0.28", - "lignumis-assets", + "lignumis-assets >= 1.0.2", "flib", "PlanetsLib >= 1.1.26", "astroponics >= 1.2.0", From 843117dfc9e22192880bb9c934396ea799df2f52 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 17 Mar 2025 21:59:31 +0100 Subject: [PATCH 050/150] Readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index d8c6fd1..362d68b 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,6 @@ The duration of the stay on Lignumis will be rather short. The impact of the lat The following mods can be a great addition for this mod: -#### [Burner Leech Fork](https://mods.factorio.com/mod/Burner-Leech-Fork) - -There will be fewer inserters that need to be fueled manually. - #### [Diversitree](https://mods.factorio.com/mod/Diversitree) Planted trees will have more than one variant. From be06f702fba97c34de01ebc793193fa1761554aa Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 18 Mar 2025 20:02:52 +0100 Subject: [PATCH 051/150] Add russian translation (thanks Fr_Dae) --- lignumis/locale/ru/strings.cfg | 138 +++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 lignumis/locale/ru/strings.cfg diff --git a/lignumis/locale/ru/strings.cfg b/lignumis/locale/ru/strings.cfg new file mode 100644 index 0000000..5c279ce --- /dev/null +++ b/lignumis/locale/ru/strings.cfg @@ -0,0 +1,138 @@ +[mod-name] +lignumis=○ Лигнумис + +[mod-description] +lignumis=Погрузитесь в мир Лигнумиса — луны Нависа, предлагающей лишь самые базовые технологии. + +[space-location-name] +lignumis=Лигнумис + +[space-location-description] +lignumis=Лигнумис — это луна, вращающаяся вокруг Нависа. Она во многом похожа на Навис, но кажется моложе и беднее ресурсами. + +[airborne-pollutant-name] +noise=Шум + +[airborne-pollutant-name-with-amount] +noise=__1__ шума + +[entity-name] +wood-lab=Деревянная лаборатория +peat=Торф +burner-agricultural-tower=Сельскохозяйственная башня на горелке +burner-assembling-machine=Сборочная машина на горелке +burner-long-handed-inserter=Длиннорукий манипулятор на горелке +lumber-mill=Лесопильня +gold-stromatolite=Золотой строматолит +gold-stromatolite-plant=Золотой строматолит (растение) +gold-stromatolite-lignumis=Золотой строматолит +gold-patch=Золотое месторождение +deep-miner=Глубинный бур +gold-pipe=Золотая труба +gold-pipe-to-ground=Золотая подземная труба +gold-storage-tank=Золотой резервуар +desiccation-furnace=Печь для высушивания +steam-assembling-machine=Паровая сборочная машина +provisional-rocket-silo=Временное ракетное хранилище +provisional-rocket-silo-ready=Временное ракетное хранилище (готово) +basic-gun-turret=Базовая пулеметная турель +basic-construction-robot-gold=Базовый строительный робот (золото) +basic-construction-robot-copper=Базовый строительный робот (медь) +wood-transport-belt=Деревянный транспортёр +wood-underground-belt=Деревянный подземный транспортёр +wood-splitter=Деревянный разделитель +basic-radar=Базовый радар +active-noise-cancelling-tower=Башня активного шумоподавления +quality-assembler=Качественная сборочная машина +aai-wood-loader=Деревянный загрузчик +wood-lane-splitter=Деревянный распределитель лент +lignumis-spawner-small=Гнездовая колония Лигнумиса +lignumis-small-wriggler-pentapod=Маленький пентанож Лигнумиса +lignumis-medium-wriggler-pentapod=Средний пентанож Лигнумиса + +[entity-description] +lumber-mill=Продвинутая машина для обработки древесины. +quality-assembler=Высококачественная сборочная машина, создающая только лучшие механизмы. Добавляет один уровень качества предмету, потребляя [item=gold-quality-catalyst]. Все остальные условия остаются неизменными. + +[equipment-name] +basic-portable-generator-equipment-gold=Базовый портативный генератор (золото) +basic-portable-generator-equipment-copper=Базовый портативный генератор (медь) +basic-personal-roboport-equipment-gold=Базовый персональный робопорт (золото) +basic-personal-roboport-equipment-copper=Базовый персональный робопорт (медь) + +[item-name] +wooden-gear-wheel=Деревянное зубчатое колесо +wood-science-pack=Деревянный научный пакет +peat=Торф +gold-stromatolite-seed=Семя золотого строматолита +gold-ore=Золотая руда +gold-bacteria=Золотые бактерии +gold-plate=Золотая пластина +gold-cable=Золотой кабель +moist-stromatolite-remnant=Влажный остаток строматолита +steam-science-pack=Паровой научный пакет +destination-nauvis=Путешествие на Навис +lumber=Пиломатериалы +basic-repair-pack=Базовый ремонтный комплект +cupriavidus-necator=Cupriavidus necator +dead-cupriavidus-necator=Мёртвый Cupriavidus necator +gold-quality-catalyst=Золотой катализатор качества +wood-armor=Деревянная броня +wood-darts-magazine=Обойма деревянных дротиков +basic-circuit-board=Базовая схема + +[item-description] +wooden-wall=Деревянные стены защищают базу и снижают уровень шума. +stone-wall=Обеспечивает лучшую акустическую и физическую защиту, чем деревянный аналог. +destination-nauvis=Поместите этот предмет в ракету, чтобы отправиться на Навис. Обратите внимание, что вернуться обратно удастся не скоро.\n__REMARK_COLOR_BEGIN__BETA: Перед отлётом храните не более 40 единиц предметов в инвентаре, так как текущая система перехода на Навис временная. Не забудьте взять материалы для запуска производства железа, меди и древесины.__REMARK_COLOR_END__ + +[fluid-name] +wood-pulp=Древесная масса +molten-gold=Расплавленное золото + +[recipe-name] +moist-stromatolite-remnant-desiccation=Высушивание влажного строматолита +gold-stromatolite-seed-to-peat=Обработка семян золотого строматолита +wood-liquefaction=Сжижение древесины +provisional-rocket-part=Часть временной ракеты +cupriavidus-necator-starter=Cupriavidus necator (стартовая культура) +plastic-from-cupriavidus-necator=Биопластик +casting-gold=Литьё золота + +[technology-name] +wood-science-pack=Деревянный научный пакет +burner-automation=Автоматизация на горелках +planet-discovery-nauvis=Открытие планеты Навис +planet-discovery-lignumis=Открытие луны Лигнумис +basic-radar=Базовый радар +active-noise-cancelling=Активное шумоподавление +quality-assembler=Качественная сборочная машина +automation-science-pack=Покиньте Лигнумис для изучения продвинутых технологий. + +[modifier-description] +basic-gun-turret-attack-bonus=Урон базовой турели: +__1__ + +[tile-name] +wood-floor=Деревянный пол +natural-gold-soil=Золотосодержащая почва + +[fuel-category-name] +wood=Древесное топливо +quality-catalyst=Катализатор качества + +[mod-setting-name] +lignumis-belt-progression=Прогрессивные рецепты конвейеров +lignumis-technology-progression=Прогрессивные технологии +lignumis-lumber-mill-more-recipes=Дополнительные рецепты для лесопильни + +[mod-setting-description] +lignumis-technology-progression=Добавляет деревянные и паровые научные пакеты к большинству поздних технологий. Отключение этого параметра снижает их значимость в поздней игре. +lignumis-lumber-mill-more-recipes=Лесопильня может создавать базовые турели, сборочные машины и манипуляторы на горелках. + +[gui] +quality-catalyst=Катализатор качества + +[lignumis] +start-new-game=Лигнумис рассчитан на игру с нуля, так как он удлиняет ранний этап перед Нависом. +provisional-rocket-silo-button=Спастись на Навис +provisional-rocket-silo-description=Заполните ракету ресурсами и запустите её, чтобы сбежать на Навис.\nНе забудьте взять материалы для запуска производства железа, меди и древесины. \ No newline at end of file From 7bc50df7637c04ed8477a9fbe1b753909fedb824 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 18 Mar 2025 20:36:49 +0100 Subject: [PATCH 052/150] Regular lab recipe always uses wood belt --- lignumis/prototypes/integrations/vanilla.lua | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index c8bf5a2..d515473 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -64,14 +64,7 @@ stone_furnace_remnants.animation[1].filename = Lignumis.graphics .. "entity/ston -- Lab -if settings.startup["lignumis-belt-progression"].value then - local lab_recipe = data.raw.recipe["lab"] - for _, ingredient in pairs(lab_recipe.ingredients) do - if ingredient.name == "transport-belt" then - ingredient.name = "wood-transport-belt" - end - end -end +Recipe:new("lab"):replaceIngredient("transport-belt", "wood-transport-belt") -- Gun turret From ed170d2d4df97e2e8429d50d01008b99501d970b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 18 Mar 2025 20:38:16 +0100 Subject: [PATCH 053/150] 1.0.35 --- README.md | 1 + lignumis/changelog.txt | 6 ++++++ lignumis/info.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 362d68b..37f653d 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,7 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" - Simplified chinese (zh-CN): cyx2015s - Polish (pl): StarGazer +- Russian (ru): Fr_Dae ### Assets / Code diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index b383343..c58742b 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,10 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.35 +Date: 18.03.2025 + Changes: + - Add russian translation (thanks Fr_Dae) + - Regular lab recipe always uses wood belt +--------------------------------------------------------------------------------------------------- Version: 1.0.34 Date: 17.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 2b2788f..0c9b945 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.34", + "version": "1.0.35", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 1bda174426b610bfa27f2b6997c3ef59cfb00c2d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 19 Mar 2025 00:27:38 +0100 Subject: [PATCH 054/150] Basic construction robots copper recipe uses basic circuit boards and wooden gear wheels --- .../prototypes/content/basic-construction-robots.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lignumis/prototypes/content/basic-construction-robots.lua b/lignumis/prototypes/content/basic-construction-robots.lua index 7959bd5..731dac5 100644 --- a/lignumis/prototypes/content/basic-construction-robots.lua +++ b/lignumis/prototypes/content/basic-construction-robots.lua @@ -249,21 +249,21 @@ data:extend({ robot_item("copper", 1), robot_recipe("copper", { { type = "item", name = "copper-plate", amount = 2 }, - { type = "item", name = "iron-gear-wheel", amount = 5 }, - { type = "item", name = "electronic-circuit", amount = 5 } + { type = "item", name = "wooden-gear-wheel", amount = 5 }, + { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 5 } }), generator("copper"), generator_item("copper", 1), generator_recipe("copper", { { type = "item", name = "copper-plate", amount = 10 }, - { type = "item", name = "iron-gear-wheel", amount = 10 } + { type = "item", name = "wooden-gear-wheel", amount = 10 } }), roboport("copper"), roboport_item("copper", 1), roboport_recipe("copper", { { type = "item", name = "copper-plate", amount = 5 }, - { type = "item", name = "electronic-circuit", amount = 10 }, - { type = "item", name = "iron-gear-wheel", amount = 10 } + { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 }, + { type = "item", name = "wooden-gear-wheel", amount = 10 } }), -- Technology From d68d0c1087a35217a8adbd1e69f78712ee2ccbea Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 23 Mar 2025 22:28:27 +0100 Subject: [PATCH 055/150] Lane Splitters: Correct item order --- lignumis/prototypes/compatibility/lane-splitters.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lignumis/prototypes/compatibility/lane-splitters.lua b/lignumis/prototypes/compatibility/lane-splitters.lua index c075538..25f52b4 100644 --- a/lignumis/prototypes/compatibility/lane-splitters.lua +++ b/lignumis/prototypes/compatibility/lane-splitters.lua @@ -22,6 +22,7 @@ lane_splitter.prototype.structure_patch.south.filename = data.raw.splitter["wood lane_splitter.prototype.structure_patch.west.filename = data.raw.splitter["wood-splitter"].structure_patch.west.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.order = "d[lane-splitter]-0[wood-lane-splitter]" lane_splitter.recipe.category = "wood-processing-or-assembling" data:extend({ From 75570cd4605a759a70542c7668a483824cab096e Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 23 Mar 2025 22:28:45 +0100 Subject: [PATCH 056/150] AAI Loaders: Correct item/recipe order --- lignumis/prototypes/compatibility/aai-loaders.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/aai-loaders.lua b/lignumis/prototypes/compatibility/aai-loaders.lua index ec9353a..a3ba668 100644 --- a/lignumis/prototypes/compatibility/aai-loaders.lua +++ b/lignumis/prototypes/compatibility/aai-loaders.lua @@ -41,7 +41,8 @@ AAILoaders.make_tier({ energy_required = 5 }, next_upgrade = "aai-loader", - localise = false + localise = false, + order = "d[loader]-a00[aai-wood-loader]" }) data.raw.recipe["aai-wood-loader"].category = "wood-processing-or-assembling" From 2a8a2e3562e120f034fff901aa620acaae0c9357 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 23 Mar 2025 22:30:32 +0100 Subject: [PATCH 057/150] Fix recylce recipe being generated for rocket parts --- lignumis/prototypes/content/wooden-rocket-silo.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/wooden-rocket-silo.lua b/lignumis/prototypes/content/wooden-rocket-silo.lua index feb5462..4a224a8 100644 --- a/lignumis/prototypes/content/wooden-rocket-silo.lua +++ b/lignumis/prototypes/content/wooden-rocket-silo.lua @@ -101,7 +101,8 @@ local rocket_part_recipe = { { type = "fluid", name = "wood-pulp", amount = 5 } }, results = { { type = "item", name = "rocket-part", amount = 1 } }, - allow_productivity = true + allow_productivity = true, + auto_recycle = false, } local silo_ready = { From cfe22bf13dc38df41e431f2c28092a7cf51d1897 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 23 Mar 2025 22:39:36 +0100 Subject: [PATCH 058/150] AAI Industry: Add "wood" fuel category to burner generator and fuel processor --- lignumis/prototypes/compatibility/aai-industry.lua | 2 ++ lignumis/prototypes/content/fuel-category-updates.lua | 1 + 2 files changed, 3 insertions(+) diff --git a/lignumis/prototypes/compatibility/aai-industry.lua b/lignumis/prototypes/compatibility/aai-industry.lua index 0050a74..0dd5a1c 100644 --- a/lignumis/prototypes/compatibility/aai-industry.lua +++ b/lignumis/prototypes/compatibility/aai-industry.lua @@ -36,6 +36,8 @@ data.raw["lab"]["wood-lab"].next_upgrade = "burner-lab" table.insert(data.raw["agricultural-tower"]["burner-agricultural-tower"].energy_source.fuel_categories, "processed-chemical") +table.insert(data.raw["assembling-machine"]["fuel-processor"].energy_source.fuel_categories, "wood") + if settings.startup["lignumis-basic-circuit-board"].value then table.insert(data.raw["recipe"]["electric-mining-drill"].ingredients, { type = "item", name = "basic-circuit-board", amount = 2 }) table.insert(data.raw["recipe"]["inserter"].ingredients, { type = "item", name = "basic-circuit-board", amount = 1 }) diff --git a/lignumis/prototypes/content/fuel-category-updates.lua b/lignumis/prototypes/content/fuel-category-updates.lua index b2cb932..be4c285 100644 --- a/lignumis/prototypes/content/fuel-category-updates.lua +++ b/lignumis/prototypes/content/fuel-category-updates.lua @@ -35,3 +35,4 @@ update_fuel_categories(data.raw["reactor"]) update_fuel_categories(data.raw["car"]) update_fuel_categories(data.raw["locomotive"]) update_fuel_categories(data.raw["generator-equipment"]) +update_fuel_categories(data.raw["burner-generator"]) \ No newline at end of file From 07afca839c96f3e7dd3f9ccd938b78075aba1feb Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 23 Mar 2025 22:50:41 +0100 Subject: [PATCH 059/150] Wood Industry: Woodchips have "wood" fuel category --- lignumis/info.json | 1 + lignumis/prototypes/compatibility/data.lua | 3 ++- lignumis/prototypes/compatibility/wood-industry.lua | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 lignumis/prototypes/compatibility/wood-industry.lua diff --git a/lignumis/info.json b/lignumis/info.json index 0c9b945..1d5ecc2 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -30,6 +30,7 @@ "?aai-loaders-sane", "?atan-nuclear-science", "?lane-splitters", + "?wood-industry", "!planet-picker", "!any-planet-start", "!apm_power_ldinc", diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index 893c11f..8f4bb5b 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -4,4 +4,5 @@ require("metal-and-stars") require("alien-biomes") require("aai-loaders") require("nuclear-science") -require("lane-splitters") \ No newline at end of file +require("lane-splitters") +require("wood-industry") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/wood-industry.lua b/lignumis/prototypes/compatibility/wood-industry.lua new file mode 100644 index 0000000..14e9b0d --- /dev/null +++ b/lignumis/prototypes/compatibility/wood-industry.lua @@ -0,0 +1,3 @@ +if not mods["wood-industry"] then return end + +data.raw.item["woodchips"].fuel_category = "wood" \ No newline at end of file From 8eca5c0952638b1a3661b1c2197a3ad7309ca7b0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 24 Mar 2025 01:12:30 +0100 Subject: [PATCH 060/150] Add compatibility for "Crushing Industry" --- lignumis/info.json | 1 + lignumis/locale/en/strings.cfg | 3 + .../compatibility/crushing-industry.lua | 109 ++++++++++++++++++ lignumis/prototypes/compatibility/data.lua | 3 +- 4 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 lignumis/prototypes/compatibility/crushing-industry.lua diff --git a/lignumis/info.json b/lignumis/info.json index 1d5ecc2..48fd5d4 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -31,6 +31,7 @@ "?atan-nuclear-science", "?lane-splitters", "?wood-industry", + "?crushing-industry", "!planet-picker", "!any-planet-start", "!apm_power_ldinc", diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 37064fc..f7d241e 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -80,6 +80,7 @@ gold-quality-catalyst=Gold quality catalyst wood-armor=Wood armor wood-darts-magazine=Wood darts magazine basic-circuit-board=Basic circuit board +crushed-gold-ore=Crushed gold ore [item-description] wooden-wall=Use wooden walls to protect your base from the locals and to reduce noise levels. @@ -104,6 +105,7 @@ rocket-fuel-from-wood-pulp-and-peat=Bio-rocket-fuel nutrients-from-wood-pulp=Nutrients from wood pulp active-noise-cancelling=Active noise cancelling casting-gold=Casting gold +gold-ore-crushing=Gold ore crushing [recipe-description] moist-stromatolite-remnant-desiccation-without-steam=Used for balancing the production of steam. @@ -134,6 +136,7 @@ basic-radar=Basic radar active-noise-cancelling=Active noise cancelling quality-assembler=Quality assembler aai-wood-loader=Wood loader +basic-ore-crushing=Basic ore crushing [technology-description] wood-science-pack=Allows research of basic technologies based on wood products. diff --git a/lignumis/prototypes/compatibility/crushing-industry.lua b/lignumis/prototypes/compatibility/crushing-industry.lua new file mode 100644 index 0000000..d1b5bc3 --- /dev/null +++ b/lignumis/prototypes/compatibility/crushing-industry.lua @@ -0,0 +1,109 @@ +local item_sounds = require("__base__.prototypes.item_sounds") +local Technology = require("__cf-lib__/data/Technology") +local Recipe = require("__cf-lib__/data/Recipe") + +if not mods["crushing-industry"] then return end +if not settings.startup["crushing-industry-ore"].value then return end + +data:extend({ + { + type = "item", + name = "crushed-gold-ore", + icon = Lignumis.graphics .. "icons/crushed-gold-ore.png", + pictures = { + { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore.png", scale = 0.5, mipmap_count = 4 }, + { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore-1.png", scale = 0.5, mipmap_count = 4 }, + { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore-2.png", scale = 0.5, mipmap_count = 4 }, + }, + subgroup = "raw-resource", + color_hint = { text = "C" }, + order = "f[gold-ore]-c[crushed]", + inventory_move_sound = item_sounds.resource_inventory_move, + pick_sound = item_sounds.resource_inventory_pickup, + drop_sound = item_sounds.resource_inventory_move, + stack_size = 100, + weight = 2 * kg + }, + { + type = "recipe", + name = "crushed-gold-ore", + localised_name = { "recipe-name.gold-ore-crushing" }, + icons = CrushingIndustry.make_crushing_icons("gold-ore"), + category = "basic-crushing", + enabled = false, + allow_productivity = true, + auto_recycle = false, + energy_required = 1.2, + ingredients = { { type = "item", name = "gold-ore", amount = 1 } }, + results = { { type = "item", name = "crushed-gold-ore", amount = 1, extra_count_fraction = 0.5 } }, + main_product = "crushed-gold-ore" + }, + { + type = "recipe", + name = "crushed-gold-smelting", + localised_name = { "recipe-name.crushed-smelting", { "item-name.gold-plate" } }, + icons = { + { icon = Lignumis.graphics .. "icons/crushed-gold-ore.png", shift = { -12, -12 }, scale = 0.4 }, + { icon = Lignumis.graphics .. "icons/gold-plate.png", draw_background = true } + }, + category = "smelting", + order = "a[smelting]-b[gold-plate]-c[crushed]", + enabled = false, + allow_productivity = true, + auto_recycle = false, + hide_from_player_crafting = settings.startup["crushing-industry-hide-player-crafting"].value, + energy_required = 3.2, + ingredients = { { type = "item", name = "crushed-gold-ore", amount = 1 } }, + results = { { type = "item", name = "gold-plate", amount = 1 } }, + main_product = "gold-plate", + }, + { + type = "technology", + name = "basic-ore-crushing", + icon = Lignumis.graphics .. "technology/basic-ore-crushing.png", + icon_size = 256, + effects = { + { type = "unlock-recipe", recipe = "burner-crusher" }, + { type = "unlock-recipe", recipe = "crushed-gold-ore" }, + { type = "unlock-recipe", recipe = "crushed-gold-smelting" } + }, + prerequisites = { "steam-science-pack" }, + unit = { + count = 100, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 15 + } + } +}) + +if settings.startup["crushing-industry-byproducts"].value then + table.insert(data.raw["recipe"]["crushed-gold-ore"].results, { type = "item", name = "gold-ore", amount = 1, probability = 0.05 }) + table.insert(data.raw["recipe"]["crushed-gold-ore"].results, { type = "item", name = "sand", amount = 1, probability = 0.02 }) +end + +if mods["aai-industry"] then + Technology:new("burner-mechanics"):removeRecipe("burner-crusher") +else + Technology:new("steam-power"):removeRecipe("burner-crusher") +end + + + +local gold_recipe = Recipe:new("burner-crusher") + :replaceIngredient("iron-gear-wheel", "wooden-gear-wheel") + :replaceIngredient("iron-plate", "gold-plate") + +gold_recipe:clone("burner-crusher-copper") + :replaceIngredient("gold-plate", "copper-plate") + :assign({ + localised_name = { "entity-name.burner-crushe" }, + icons = { + { icon = data.raw.item["burner-crusher"].icon }, + { icon = "__base__/graphics/icons/copper-plate.png", scale = 0.25, shift = { 8, 8 } } + } + }) + :unlockedByTechnology("copper-processing") + :apply() \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index 8f4bb5b..6d649e2 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -5,4 +5,5 @@ require("alien-biomes") require("aai-loaders") require("nuclear-science") require("lane-splitters") -require("wood-industry") \ No newline at end of file +require("wood-industry") +require("crushing-industry") \ No newline at end of file From d7f5d0ca67c1cb222e60137ffcab267908036a55 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 24 Mar 2025 01:18:09 +0100 Subject: [PATCH 061/150] 1.0.36 --- lignumis/changelog.txt | 12 ++++++++++++ lignumis/info.json | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index c58742b..13c1bae 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,16 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.36 +Date: 24.03.2025 + Changes: + - Basic construction robots copper recipe uses basic circuit boards and wooden gear wheels + - AAI Industry: Add "wood" fuel category to burner generator and fuel processor + - Wood Industry: Woodchips have "wood" fuel category + - Add compatibility for "Crushing Industry" + Bug Fixes: + - Lane Splitters: Correct item order + - AAI Loaders: Correct item/recipe order + - Fix recylce recipe being generated for rocket parts +--------------------------------------------------------------------------------------------------- Version: 1.0.35 Date: 18.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 48fd5d4..6d7c7b8 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.35", + "version": "1.0.36", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", @@ -9,7 +9,7 @@ "dependencies": [ "base", "space-age >= 2.0.28", - "lignumis-assets >= 1.0.2", + "lignumis-assets >= 1.0.3", "flib", "PlanetsLib >= 1.1.26", "astroponics >= 1.2.0", From ea7c652875e3c555e18a265c7d6bed9f8f37c556 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 24 Mar 2025 01:26:07 +0100 Subject: [PATCH 062/150] Crushing Industry: Fix name of burner crusher copper recipe --- lignumis/prototypes/compatibility/crushing-industry.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/crushing-industry.lua b/lignumis/prototypes/compatibility/crushing-industry.lua index d1b5bc3..1cee995 100644 --- a/lignumis/prototypes/compatibility/crushing-industry.lua +++ b/lignumis/prototypes/compatibility/crushing-industry.lua @@ -99,7 +99,7 @@ local gold_recipe = Recipe:new("burner-crusher") gold_recipe:clone("burner-crusher-copper") :replaceIngredient("gold-plate", "copper-plate") :assign({ - localised_name = { "entity-name.burner-crushe" }, + localised_name = { "entity-name.burner-crusher" }, icons = { { icon = data.raw.item["burner-crusher"].icon }, { icon = "__base__/graphics/icons/copper-plate.png", scale = 0.25, shift = { 8, 8 } } From 799e22b90a8983efe9a1aff8a8b207913b3eb197 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 25 Mar 2025 19:45:57 +0100 Subject: [PATCH 063/150] Switch to "Inserter Fuel Leech" --- lignumis/info.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lignumis/info.json b/lignumis/info.json index 6d7c7b8..348bcaa 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -20,7 +20,7 @@ "Wood-Walls >= 1.2.0", "pollution-as-surface-property", "bioprocessing-tab", - "Burner-Leech-Fork", + "InserterFuelLeech", "?hot-metals >= 1.1.0", "?wood-military >= 2.3.3", "?metal-and-stars", @@ -37,6 +37,7 @@ "!apm_power_ldinc", "!wood-logistics", "!early-agriculture", - "!wood-universe-modpack" + "!wood-universe-modpack", + "!Burner-Leech-Fork" ] } \ No newline at end of file From a7490b6277b8ec05fbaeb0c875c1d3b5cceb0b43 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 25 Mar 2025 19:46:32 +0100 Subject: [PATCH 064/150] Crushing Industry: Burner Cusher can be crafted in Lumber Mill --- lignumis/prototypes/compatibility/crushing-industry.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lignumis/prototypes/compatibility/crushing-industry.lua b/lignumis/prototypes/compatibility/crushing-industry.lua index 1cee995..863c44b 100644 --- a/lignumis/prototypes/compatibility/crushing-industry.lua +++ b/lignumis/prototypes/compatibility/crushing-industry.lua @@ -95,6 +95,9 @@ end local gold_recipe = Recipe:new("burner-crusher") :replaceIngredient("iron-gear-wheel", "wooden-gear-wheel") :replaceIngredient("iron-plate", "gold-plate") + :assign({ + category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting" + }) gold_recipe:clone("burner-crusher-copper") :replaceIngredient("gold-plate", "copper-plate") From 2b847f5cd35ff2d4686b217d820ca4a71da249f5 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 25 Mar 2025 20:00:44 +0100 Subject: [PATCH 065/150] Add descriptions with gold per minute from plants and seeds --- lignumis/locale/en/strings.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index f7d241e..d5df23a 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -53,6 +53,7 @@ lignumis-medium-wriggler-pentapod=Lignumis medium wiggler pentapod [entity-description] lumber-mill=Advanced machine to process wood. quality-assembler=High-end assembler to craft only the finest quality machines. It gives one free quality tier to the crafted item by consuming [item=gold-quality-catalyst]. Surface conditions and ingredients are otherwise unchanged. +gold-stromatolite-plant=Harvest gold stromatolites for bacteria that enrich gold from the ground.\n__REMARK_COLOR_BEGIN__Expected yield:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m [equipment-name] basic-portable-generator-equipment-gold=Basic portable generator equipment (gold) @@ -85,7 +86,7 @@ crushed-gold-ore=Crushed gold ore [item-description] wooden-wall=Use wooden walls to protect your base from the locals and to reduce noise levels. stone-wall=Better acoustic and physical protection than the wooden counterpart. -destination-nauvis=Insert this item into a rocket to travel to Nauvis. Notice that you won`t come back for a while.\n__REMARK_COLOR_BEGIN__BETA notice: Keep at most 40 item stack in your inventory before leaving as the current transition to Nauvis is a temporary implementation. Be sure to take material to jumpstart your iron, copper and wood production.__REMARK_COLOR_END__ +gold-stromatolite-seed=Plant the seed to grow gold stromatolites. They house bacteria that enrich gold from the ground.\n__REMARK_COLOR_BEGIN__Expected yield:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m [fluid-name] wood-pulp=Wood pulp From d15f877fe1fbe81ce779021f6892b9a5466fa28a Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 25 Mar 2025 20:21:16 +0100 Subject: [PATCH 066/150] readme --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 37f653d..89c841d 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,11 @@ If you like go more into the charcoal direction. It has no overlap with Lignumis For wood on the other planets. +#### [Crushing Industry](https://mods.factorio.com/mod/crushing-industry) + +Recommended with high science cost settings. It adds crushers and crushed ores to increase productivity. +Lignumis adds crushed gold ore and a technology to unlock the crusher with wood and steam science packs. + #### [AAI Loaders](https://mods.factorio.com/mod/aai-loaders) A wooden loader is added when this mod is active. Also supports [AAI Loaders, a sane rebalance](https://mods.factorio.com/mod/aai-loaders-sane). From c5d94ec0b9f2d743576759d29b249f1db440bede Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 00:24:51 +0100 Subject: [PATCH 067/150] Add compatibility for "Any planet start" (Vulcanus) --- lignumis/control.lua | 4 +-- lignumis/info.json | 2 +- lignumis/locale/en/strings.cfg | 8 ++--- lignumis/migrations/lignumis-1.0.37.lua | 5 +++ .../compatibility/any-planet-start.lua | 33 +++++++++++++++++++ lignumis/prototypes/compatibility/final.lua | 1 + .../prototypes/content/lignumis/planet.lua | 9 +++-- lignumis/scripts/init-existing.lua | 6 ++++ lignumis/scripts/init-new.lua | 7 ++++ lignumis/scripts/init.lua | 30 ++++++++--------- lignumis/scripts/to-nauvis.lua | 11 +++---- lignumis/scripts/wooden-rocket-silo.lua | 11 ++++--- lignumis/settings.lua | 2 +- 13 files changed, 89 insertions(+), 40 deletions(-) create mode 100644 lignumis/migrations/lignumis-1.0.37.lua create mode 100644 lignumis/prototypes/compatibility/any-planet-start.lua diff --git a/lignumis/control.lua b/lignumis/control.lua index 3beffba..e8d5a4f 100644 --- a/lignumis/control.lua +++ b/lignumis/control.lua @@ -7,6 +7,4 @@ handler.add_libraries({ require("scripts/init"), require("scripts/to-nauvis"), require("scripts/wooden-rocket-silo") -}) - - +}) \ No newline at end of file diff --git a/lignumis/info.json b/lignumis/info.json index 348bcaa..468dbf8 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -32,8 +32,8 @@ "?lane-splitters", "?wood-industry", "?crushing-industry", + "?any-planet-start", "!planet-picker", - "!any-planet-start", "!apm_power_ldinc", "!wood-logistics", "!early-agriculture", diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index d5df23a..06a5daa 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -203,8 +203,8 @@ quality-catalyst-energy-value=Quality value quality-catalyst=Quality catalyst [lignumis] -start-new-game=Lignumis is meant to be played in a fresh game as it extends the early game before Nauvis. -provisional-rocket-silo-button=Escape to Nauvis +start-new-game=Lignumis is meant to be played in a fresh game as it extends the early game. +provisional-rocket-silo-button=Escape to __1__ provisional-rocket-silo-button-tooltip-inventory=Your personal inventory must be empty! -provisional-rocket-silo-button-tooltip-nauvis=You don't know yet where to go! -provisional-rocket-silo-description=Fill the rocket inventory and launch the rocket to escape to Nauvis.\nBe sure to take material to jumpstart your iron, copper and wood production. +provisional-rocket-silo-button-tooltip-target=You don't know yet where to go! +provisional-rocket-silo-description=Fill the rocket inventory and launch the rocket to escape to __1__.\nBe sure to take material to jumpstart your iron, copper and wood production. diff --git a/lignumis/migrations/lignumis-1.0.37.lua b/lignumis/migrations/lignumis-1.0.37.lua new file mode 100644 index 0000000..263999a --- /dev/null +++ b/lignumis/migrations/lignumis-1.0.37.lua @@ -0,0 +1,5 @@ +storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis" + +if script.active_mods["any-planet-start"] then + storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet +end \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua new file mode 100644 index 0000000..f58c399 --- /dev/null +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -0,0 +1,33 @@ +local Technology = require("__cf-lib__/data/Technology") + +if not mods["any-planet-start"] then return end + +if settings.startup["aps-planet"].value == "vulcanus" then + Technology:new("planet-discovery-vulcanus") + :assign({ + enabled = true, + hidden = false, + unit = { + count = 100, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 30 + } + }) + :addPrerequisite("provisional-rocketry") + Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-vulcanus") + Technology:new("iron-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-vulcanus") + Technology:new("automation"):addPrerequisite("iron-processing") + Technology:new("steel-processing"):addPrerequisite("iron-processing") + Technology:new("tungsten-carbide"):addPrerequisite("planet-discovery-vulcanus") + + Technology:new("iron-processing") + :addPrerequisite("planet-discovery-vulcanus") + .prototype.research_trigger.entity = "big-volcanic-rock" + + Technology:new("copper-processing") + :addPrerequisite("planet-discovery-vulcanus") + .prototype.research_trigger.entity = "big-volcanic-rock" +end diff --git a/lignumis/prototypes/compatibility/final.lua b/lignumis/prototypes/compatibility/final.lua index ddb16d2..46b180a 100644 --- a/lignumis/prototypes/compatibility/final.lua +++ b/lignumis/prototypes/compatibility/final.lua @@ -1,4 +1,5 @@ require("aai-loaders-final") +require("any-planet-start") if not data.raw.technology["legendary-quality"] then table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality") diff --git a/lignumis/prototypes/content/lignumis/planet.lua b/lignumis/prototypes/content/lignumis/planet.lua index ab09ca6..0d501bf 100644 --- a/lignumis/prototypes/content/lignumis/planet.lua +++ b/lignumis/prototypes/content/lignumis/planet.lua @@ -3,6 +3,11 @@ local effects = require("__core__/lualib/surface-render-parameter-effects") local procession_graphic_catalogue_types = require("__base__/prototypes/planet/procession-graphic-catalogue-types") local asteroid_util = require("__space-age__/prototypes/planet/asteroid-spawn-definitions") +local target_planet = settings.startup["lignumis-second-planet"].value or "nauvis" +if mods["any-planet-start"] then + target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or target_planet +end + local lignumis_chunks = 0.025 local lignumis_ratio = {1, 1, 1 , 0} local nauvis_lignumis = { @@ -23,7 +28,7 @@ PlanetsLib:extend({ orbit = { parent = { type = "planet", - name = "nauvis" + name = target_planet }, distance = 2, orientation = 0.16, @@ -116,7 +121,7 @@ data:extend({ type = "space-connection", name = "nauvis-lignumis", subgroup = "planet-connections", - from = "nauvis", + from = target_planet, to = "lignumis", order = "0", length = 2000, diff --git a/lignumis/scripts/init-existing.lua b/lignumis/scripts/init-existing.lua index 3836b3a..4254413 100644 --- a/lignumis/scripts/init-existing.lua +++ b/lignumis/scripts/init-existing.lua @@ -6,6 +6,12 @@ local InitExisting = {} InitExisting.on_init = function() if game.tick == 0 then return end + storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis" + + if script.active_mods["any-planet-start"] then + storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet + end + storage.init = {} for _, player in pairs(game.players) do storage.init[player.index] = true diff --git a/lignumis/scripts/init-new.lua b/lignumis/scripts/init-new.lua index f81bf46..1f708bc 100644 --- a/lignumis/scripts/init-new.lua +++ b/lignumis/scripts/init-new.lua @@ -63,6 +63,13 @@ end InitNew.on_init = function() if game.tick > 0 then return end + storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis" + + if script.active_mods["any-planet-start"] then + storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet + remote.call("APS", "override_planet", "lignumis") + end + init_intro() init_space_locations() init_lignumis() diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index 1ff844b..8ca9832 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -7,19 +7,6 @@ local Init = { events = {} } -local target_planet = settings.global["lignumis-second-planet"].value or "nauvis" - - --- Migrate storage init as it was just a boolean before not supporting multiple players -local function migrate_0_9_6(event) - if storage.init and type(storage.init) == "boolean" then - storage.init = { - [event.player_index] = true - } - end -end - - -- Initialize the player -- Teleport to Lignumis and give some starting items local function init_player(event) @@ -74,7 +61,6 @@ end Init.events[defines.events.on_player_created] = function(event) - migrate_0_9_6(event) storage.init = storage.init or {} if storage.init[event.player_index] then return end @@ -85,8 +71,10 @@ Init.events[defines.events.on_player_created] = function(event) game.print("While Alien Biomes is playable with Lignumis, it is not recommended as it prevents trees from being generated on Lignumis.") end - init_player(event) - init_freeplay(event) + if not script.active_mods["any-planet-start"] then + init_player(event) + init_freeplay(event) + end end @@ -96,7 +84,7 @@ Init.events[defines.events.on_player_changed_surface] = function(event) if player.controller_type ~= defines.controllers.character then return end - if player and player.surface.name == target_planet then + if player and player.surface.name == storage.target_planet then storage.nauvis_visited = true end @@ -153,4 +141,12 @@ Init.events[defines.events.on_cutscene_cancelled] = function(event) player.zoom = 1.5 end +Init.on_configuration_changed = function() + storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis" + + if script.active_mods["any-planet-start"] then + storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet + end +end + return Init diff --git a/lignumis/scripts/to-nauvis.lua b/lignumis/scripts/to-nauvis.lua index c8dd0e6..f9aed80 100644 --- a/lignumis/scripts/to-nauvis.lua +++ b/lignumis/scripts/to-nauvis.lua @@ -6,8 +6,6 @@ local ToNauvis = { events = {} } -local target_planet = settings.global["lignumis-second-planet"].value or "nauvis" - -- Chart the starting area for the player local function chart_starting_area(surface, player) local r = 200 @@ -20,7 +18,7 @@ end -- Initialize Nauvis local function init_nauvis() if storage.nauvis_visited then return end - local nauvis = game.planets[target_planet].create_surface() + local nauvis = game.planets[storage.target_planet].create_surface() nauvis.request_to_generate_chunks({ 0, 0 }, 3) nauvis.force_generate_chunk_requests() nauvis.daytime = 0.7 @@ -29,12 +27,11 @@ end -- Teleport player to Nauvis and show welcome message local function teleport_player(player) - local nauvis = game.planets[target_planet].surface + local nauvis = game.planets[storage.target_planet].surface if player.surface.name == "lignumis" then local position = nauvis.find_non_colliding_position("character", { 0, 0 }, 100, 1) or { 0, 0 } - player.teleport(position, target_planet) + player.teleport(position, storage.target_planet) chart_starting_area(nauvis, player) - player.print("Oh no, not again. But... Welcome to Nauvis!") end end @@ -45,7 +42,7 @@ local function init_freeplay() if not remote.interfaces.freeplay then return end storage.crashed_ship_nauvis = true - local nauvis = game.planets[target_planet].surface + local nauvis = game.planets[storage.target_planet].surface local ship_items = { ["burner-mining-drill"] = 2, ["stone-furnace"] = 2, diff --git a/lignumis/scripts/wooden-rocket-silo.lua b/lignumis/scripts/wooden-rocket-silo.lua index dd64fbc..9b132a3 100644 --- a/lignumis/scripts/wooden-rocket-silo.lua +++ b/lignumis/scripts/wooden-rocket-silo.lua @@ -12,16 +12,17 @@ local function build_gui(player, rocket_silo) position = defines.relative_gui_position.right } - local launch_button = { type = "button", name = "provisional-rocket-silo-launch-button", caption = { "lignumis.provisional-rocket-silo-button" } } + local target_planet_name = { "space-location-name." .. storage.target_planet } + local launch_button = { type = "button", name = "provisional-rocket-silo-launch-button", caption = { "lignumis.provisional-rocket-silo-button", target_planet_name } } local inventory = player.get_main_inventory() local is_inventory_empty = inventory.is_empty() - local is_nauvis_researched = player.force.technologies["planet-discovery-nauvis"].researched + local is_nauvis_researched = player.force.technologies["planet-discovery-" .. storage.target_planet].researched launch_button.enabled = is_inventory_empty and is_nauvis_researched if not is_inventory_empty then launch_button.tooltip = { "lignumis.provisional-rocket-silo-button-tooltip-inventory" } elseif not is_nauvis_researched then - launch_button.tooltip = { "lignumis.provisional-rocket-silo-button-tooltip-nauvis" } + launch_button.tooltip = { "lignumis.provisional-rocket-silo-button-tooltip-target" } end @@ -35,7 +36,7 @@ local function build_gui(player, rocket_silo) direction = "vertical", anchor = anchor, children = { - { type = "label", style = "frame_title", caption = { "lignumis.provisional-rocket-silo-button" }, ignored_by_interaction = true }, + { type = "label", style = "frame_title", caption = { "lignumis.provisional-rocket-silo-button", target_planet_name }, ignored_by_interaction = true }, { type = "frame", direction = "vertical", @@ -46,7 +47,7 @@ local function build_gui(player, rocket_silo) direction = "vertical", style = "inset_frame_container_vertical_flow", children = { - { type = "label", caption = { "lignumis.provisional-rocket-silo-description" } }, + { type = "label", caption = { "lignumis.provisional-rocket-silo-description", target_planet_name } }, launch_button } } diff --git a/lignumis/settings.lua b/lignumis/settings.lua index d23e183..9da7673 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -58,7 +58,7 @@ data:extend({ { type = "string-setting", name = "lignumis-second-planet", - setting_type = "runtime-global", + setting_type = "startup", allowed_values = { "nauvis" }, default_value = "nauvis", hidden = true From 8ca02c341c58461fdeeee3685c7b2625c5f3b01b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 09:23:01 +0100 Subject: [PATCH 068/150] Add compatibility for "Any planet start" (Fulgora) --- .../compatibility/any-planet-start.lua | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index f58c399..cb23e87 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -2,32 +2,48 @@ local Technology = require("__cf-lib__/data/Technology") if not mods["any-planet-start"] then return end -if settings.startup["aps-planet"].value == "vulcanus" then - Technology:new("planet-discovery-vulcanus") - :assign({ - enabled = true, - hidden = false, - unit = { - count = 100, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 30 - } - }) - :addPrerequisite("provisional-rocketry") - Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-vulcanus") - Technology:new("iron-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-vulcanus") +local target_planet = settings.startup["aps-planet"].value + +if target_planet == "none" or target_planet == "nauvis" then return end + +-- Switch planet discovery technology to the new planet +Technology:new("planet-discovery-" .. target_planet) + :assign({ + enabled = true, + hidden = false, + unit = { + count = 100, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 30 + } + }) + :addPrerequisite("provisional-rocketry") +Technology:new("iron-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet) +Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet) + + +-- Vulcanus +if target_planet == "vulcanus" then Technology:new("automation"):addPrerequisite("iron-processing") Technology:new("steel-processing"):addPrerequisite("iron-processing") Technology:new("tungsten-carbide"):addPrerequisite("planet-discovery-vulcanus") - - Technology:new("iron-processing") - :addPrerequisite("planet-discovery-vulcanus") - .prototype.research_trigger.entity = "big-volcanic-rock" - - Technology:new("copper-processing") - :addPrerequisite("planet-discovery-vulcanus") - .prototype.research_trigger.entity = "big-volcanic-rock" + Technology:new("iron-processing").prototype.research_trigger.entity = "big-volcanic-rock" + Technology:new("copper-processing").prototype.research_trigger.entity = "big-volcanic-rock" end + + +-- Fulgora +if target_planet == "fulgora" then + Technology:new("recycling"):addPrerequisite("planet-discovery-fulgora") + Technology:new("iron-processing").prototype.research_trigger.entity = "scrap" + Technology:new("copper-processing").prototype.research_trigger.entity = "scrap" + + if mods["fulgora-coralmium-agriculture"] then + Technology:new("coralmium-recycling") + :addPrerequisite("recycling") + :removeRecipe("agricultural-tower") + end +end \ No newline at end of file From 5ca6eb9b3d1543525adc6c8aaf4130f9c754693e Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 09:27:40 +0100 Subject: [PATCH 069/150] Wood mods for Vulcanus and Fulgora are mandatory Sort mods alphabetically --- lignumis/info.json | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/lignumis/info.json b/lignumis/info.json index 468dbf8..43231a6 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -9,35 +9,37 @@ "dependencies": [ "base", "space-age >= 2.0.28", - "lignumis-assets >= 1.0.3", - "flib", - "PlanetsLib >= 1.1.26", "astroponics >= 1.2.0", - "cf-lib >= 0.0.8", - "mf-core >= 1.0.3", - "mf-buildings >= 1.0.7", - "mf-logistics >= 1.0.1", - "Wood-Walls >= 1.2.0", - "pollution-as-surface-property", "bioprocessing-tab", + "cf-lib >= 0.0.8", + "flib", + "fulgora-coralmium-agriculture", "InserterFuelLeech", - "?hot-metals >= 1.1.0", - "?wood-military >= 2.3.3", - "?metal-and-stars", + "lignumis-assets >= 1.0.3", + "mf-buildings >= 1.0.7", + "mf-core >= 1.0.3", + "mf-logistics >= 1.0.1", + "PlanetsLib >= 1.1.26", + "pollution-as-surface-property", + "Wood-Walls >= 1.2.0", + "vulcanus-sulfuric-bacteria", "?aai-industry", - "?Diversitree", "?aai-loaders", "?aai-loaders-sane", - "?atan-nuclear-science", - "?lane-splitters", - "?wood-industry", - "?crushing-industry", "?any-planet-start", - "!planet-picker", + "?atan-nuclear-science", + "?crushing-industry", + "?Diversitree", + "?hot-metals >= 1.1.0", + "?lane-splitters", + "?metal-and-stars", + "?wood-industry", + "?wood-military >= 2.3.3", "!apm_power_ldinc", - "!wood-logistics", + "!Burner-Leech-Fork", "!early-agriculture", - "!wood-universe-modpack", - "!Burner-Leech-Fork" + "!planet-picker", + "!wood-logistics", + "!wood-universe-modpack" ] } \ No newline at end of file From 6f4e8dcda817335db36bb0408f0ed1d1897dbe21 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 09:37:59 +0100 Subject: [PATCH 070/150] Add compatibility for "Any planet start" (Gleba) --- .../compatibility/any-planet-start.lua | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index cb23e87..4b3aaa5 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -46,4 +46,21 @@ if target_planet == "fulgora" then :addPrerequisite("recycling") :removeRecipe("agricultural-tower") end -end \ No newline at end of file +end + + +-- Gleba +if target_planet == "gleba" then + Technology:new("landfill") + :setPrerequisites({ "burner-automation" }) + :assign({ + unit = { + count = 50, + ingredients = { { "wood-science-pack", 1 } }, + time = 15 + } + }) + .prototype.research_trigger = nil + Technology:new("iron-processing").prototype.research_trigger.entity = "iron-stromatolite" + Technology:new("copper-processing").prototype.research_trigger.entity = "copper-stromatolite" +end From 151337c116d80978520feb0394a6197ad97bbb57 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 09:45:36 +0100 Subject: [PATCH 071/150] Add compatibility for "Gleba reborn" --- lignumis/info.json | 1 + .../prototypes/compatibility/gleba-reborn.lua | 16 ++++++++++++++++ lignumis/prototypes/compatibility/updates.lua | 3 ++- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 lignumis/prototypes/compatibility/gleba-reborn.lua diff --git a/lignumis/info.json b/lignumis/info.json index 43231a6..4d8c1ae 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -30,6 +30,7 @@ "?atan-nuclear-science", "?crushing-industry", "?Diversitree", + "?gleba-reborn", "?hot-metals >= 1.1.0", "?lane-splitters", "?metal-and-stars", diff --git a/lignumis/prototypes/compatibility/gleba-reborn.lua b/lignumis/prototypes/compatibility/gleba-reborn.lua new file mode 100644 index 0000000..ec97fc0 --- /dev/null +++ b/lignumis/prototypes/compatibility/gleba-reborn.lua @@ -0,0 +1,16 @@ +local Technology = require("__cf-lib__/data/Technology") + +if not mods["gleba-reborn"] then return end + +Technology:new("tree-seeding") + :setPrerequisites({ "wood-science-pack" }) + :assign({ + unit = { + count = 10, + ingredients = { + { "wood-science-pack", 1 } + }, + time = 10 + } + }) + .prototype.research_trigger = nil \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/updates.lua b/lignumis/prototypes/compatibility/updates.lua index 7591d8b..131611d 100644 --- a/lignumis/prototypes/compatibility/updates.lua +++ b/lignumis/prototypes/compatibility/updates.lua @@ -1 +1,2 @@ -require("aai-industry") \ No newline at end of file +require("aai-industry") +require("gleba-reborn") \ No newline at end of file From bf2f46512e499e957e47273bcb9acc8a52f3fcc0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 18:43:29 +0100 Subject: [PATCH 072/150] Any planet start (Fulgora): Medium electric pole is unlocked together with the recycler --- lignumis/prototypes/compatibility/any-planet-start.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index 4b3aaa5..3584a8a 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -37,7 +37,10 @@ end -- Fulgora if target_planet == "fulgora" then - Technology:new("recycling"):addPrerequisite("planet-discovery-fulgora") + data.raw.recipe["medium-electric-pole"].enabled = false + Technology:new("recycling") + :addPrerequisite("planet-discovery-fulgora") + :addRecipe("medium-electric-pole") Technology:new("iron-processing").prototype.research_trigger.entity = "scrap" Technology:new("copper-processing").prototype.research_trigger.entity = "scrap" From 6f0fb8cf6fd27eb446b6c2c999eb5b9da365eb14 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 18:53:55 +0100 Subject: [PATCH 073/150] 1.0.37 --- lignumis/changelog.txt | 11 +++++++++++ lignumis/info.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 13c1bae..9640b79 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,15 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.37 +Date: 28.03.2025 + Changes: + - Switch from "Burner leech fork" to "Inserter Fuel Leech" + - "Wooden Vulcanus" and "Wooden Fulgora" are now mandatory ("Wooden Gleba" is currently being made) + - Crushing Industry: Burner Crusher can be crafted in Lumber Mill (with more Lumber Mill recipes enabled) + - Add compatibility for "Any planet start" - Now it is used to determine the planet after Lignumis and will move the moon accordingly + - Add compatibility for "Gleba reborn" + Bug Fixes: + - Crushing Industry: Fix name of Burner Crusher copper recipe +--------------------------------------------------------------------------------------------------- Version: 1.0.36 Date: 24.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 4d8c1ae..4bdf874 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.36", + "version": "1.0.37", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 2f01c16cda8b5880c7a4da2272aed0b9eed33ed2 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 19:05:36 +0100 Subject: [PATCH 074/150] Readme --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 89c841d..1166cc6 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ The duration of the stay on Lignumis will be rather short. The impact of the lat The following mods can be a great addition for this mod: +#### [Any Planet Start](https://mods.factorio.com/mod/any-planet-start) + +Allows you to choose the planet that Lignumis orbits. You can continue on Vulcanus, Fulgora or Gleba after leaving Lignumis. + #### [Diversitree](https://mods.factorio.com/mod/Diversitree) Planted trees will have more than one variant. @@ -24,9 +28,9 @@ If you want more of it than Lignumis offers, add this mod. It adds ammo for shot If you like go more into the charcoal direction. It has no overlap with Lignumis and starts to get relevant on Nauvis. -#### [Wooden Fulgora: Coralmium Agriculture](https://mods.factorio.com/mod/fulgora-coralmium-agriculture), [Wooden Vulcanus: Sulfuric Bacteria](https://mods.factorio.com/mod/vulcanus-sulfuric-bacteria) and [Wooden Aquilo: Seabloom Algaculture](https://mods.factorio.com/mod/aquilo-seabloom-algaculture) +#### [Wooden Aquilo: Seabloom Algaculture](https://mods.factorio.com/mod/aquilo-seabloom-algaculture) -For wood on the other planets. +For wood on Aquilo. #### [Crushing Industry](https://mods.factorio.com/mod/crushing-industry) @@ -63,8 +67,7 @@ The following planet mods are tested for (at least technical) compatibility: ## Problematic / incompatible mods -* Mods that let you start on a different planet: They are supported, but you are missing half of the content of this mod. -* 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. @@ -124,12 +127,10 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" - Trees must not die when absorbing noise - https://lua-api.factorio.com/latest/types/TreeVariation.html - Improve transition to Nauvis a bit more -- Find a better message when transitioning to Nauvis - 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) - Compatibility with [Noble Metals](https://mods.factorio.com/mod/bzgold) once it's updated -- "Any planet start" like feature that moves Lignumis to any other planet as the second planet - "Hardcore Lignumis" ## Credits From 044e058784960040300154ce988a33e6d21e76b7 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 21:13:32 +0100 Subject: [PATCH 075/150] Any planet start (Vulcanus) + Crushing Industry: Move iron crushing to fix soft-lock --- lignumis/prototypes/compatibility/any-planet-start.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index 3584a8a..01a8317 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -32,6 +32,11 @@ if target_planet == "vulcanus" then Technology:new("tungsten-carbide"):addPrerequisite("planet-discovery-vulcanus") Technology:new("iron-processing").prototype.research_trigger.entity = "big-volcanic-rock" Technology:new("copper-processing").prototype.research_trigger.entity = "big-volcanic-rock" + + if mods["crushing-industry"] then + Technology:new("concrete"):addRecipe("crushed-iron-ore") + Technology:new("ore-crushing"):removeRecipe("crushed-iron-ore") + end end From a78bcb75df897d64691374c2a68159861aea9d2f Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 21:27:12 +0100 Subject: [PATCH 076/150] Any planet start: Change internal name of the space connection to Lignumis depending on the selected planet --- lignumis/prototypes/content/lignumis/planet.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/lignumis/planet.lua b/lignumis/prototypes/content/lignumis/planet.lua index 0d501bf..971e0b0 100644 --- a/lignumis/prototypes/content/lignumis/planet.lua +++ b/lignumis/prototypes/content/lignumis/planet.lua @@ -119,7 +119,7 @@ PlanetsLib:extend({ data:extend({ { type = "space-connection", - name = "nauvis-lignumis", + name = target_planet .. "-lignumis", subgroup = "planet-connections", from = target_planet, to = "lignumis", From 7f67e0eff6c6f0b98f7ad938543a0504f45ad3db Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 28 Mar 2025 21:23:33 +0100 Subject: [PATCH 077/150] 1.0.38 --- lignumis/changelog.txt | 7 +++++++ lignumis/info.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 9640b79..04f38d6 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,11 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.38 +Date: 28.03.2025 + Changes: + - Any planet start: Change internal name of the space connection to Lignumis depending on the selected planet + Bug Fixes: + - Any planet start (Vulcanus) + Crushing Industry: Move iron crushing to fix soft-lock +--------------------------------------------------------------------------------------------------- Version: 1.0.37 Date: 28.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 4bdf874..25b74f6 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.37", + "version": "1.0.38", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 087c30ffcc5fd7d58b2277a5eed6908874ba6564 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 29 Mar 2025 23:10:05 +0100 Subject: [PATCH 078/150] AAI loaders, Lane splitters: Apply recipe changes only when AAI Industry is active --- lignumis/prototypes/compatibility/aai-loaders-final.lua | 2 +- lignumis/prototypes/compatibility/lane-splitters.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lignumis/prototypes/compatibility/aai-loaders-final.lua b/lignumis/prototypes/compatibility/aai-loaders-final.lua index 992d92d..645d1d0 100644 --- a/lignumis/prototypes/compatibility/aai-loaders-final.lua +++ b/lignumis/prototypes/compatibility/aai-loaders-final.lua @@ -4,6 +4,6 @@ if not mods["aai-loaders"] then return end local recipe = Recipe:new("aai-loader"):replaceIngredient("transport-belt", "aai-wood-loader", 1) -if settings.startup["lignumis-basic-circuit-board"].value then +if mods["aai-industry"] and settings.startup["lignumis-basic-circuit-board"].value then recipe:replaceIngredient("electronic-circuit", "basic-circuit-board") end \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/lane-splitters.lua b/lignumis/prototypes/compatibility/lane-splitters.lua index 25f52b4..5493840 100644 --- a/lignumis/prototypes/compatibility/lane-splitters.lua +++ b/lignumis/prototypes/compatibility/lane-splitters.lua @@ -33,6 +33,6 @@ data:extend({ Technology:new("wood-logistics"):addRecipe("wood-lane-splitter") -if settings.startup["lignumis-basic-circuit-board"].value then +if mods["aai-industry"] and settings.startup["lignumis-basic-circuit-board"].value then Recipe:new("lane-splitter"):replaceIngredient("electronic-circuit", "basic-circuit-board") end \ No newline at end of file From 0bbd830068734fceb66c15c8c94c59a03444f98b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 3 Apr 2025 18:19:12 +0200 Subject: [PATCH 079/150] AAI Loaders: Adhere belt progression setting --- lignumis/prototypes/compatibility/aai-loaders-final.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lignumis/prototypes/compatibility/aai-loaders-final.lua b/lignumis/prototypes/compatibility/aai-loaders-final.lua index 645d1d0..e44d68d 100644 --- a/lignumis/prototypes/compatibility/aai-loaders-final.lua +++ b/lignumis/prototypes/compatibility/aai-loaders-final.lua @@ -2,8 +2,12 @@ local Recipe = require("__cf-lib__/data/Recipe") if not mods["aai-loaders"] then return end -local recipe = Recipe:new("aai-loader"):replaceIngredient("transport-belt", "aai-wood-loader", 1) +local recipe = Recipe:new("aai-loader") + +if settings.startup["lignumis-belt-progression"].value then + recipe:replaceIngredient("transport-belt", "aai-wood-loader", 1) +end if mods["aai-industry"] and settings.startup["lignumis-basic-circuit-board"].value then recipe:replaceIngredient("electronic-circuit", "basic-circuit-board") -end \ No newline at end of file +end From bcc4c7a18fd9cd1e2618ace4d07d23469217fd03 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 3 Apr 2025 18:31:39 +0200 Subject: [PATCH 080/150] Add Space Age flag --- lignumis/info.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lignumis/info.json b/lignumis/info.json index 25b74f6..6988e40 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -6,6 +6,7 @@ "author": "cackling fiend", "homepage": "https://discord.gg/5bevXf5W", "factorio_version": "2.0", + "space_travel_required": true, "dependencies": [ "base", "space-age >= 2.0.28", From 0353f911441408fc6a8cc6f7d0a675b3eebc053d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 3 Apr 2025 18:40:03 +0200 Subject: [PATCH 081/150] 1.0.39 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 04f38d6..ae30ec0 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.39 +Date: 28.03.2025 + Changes: + - Add Space Age flag + Breaking changes: + - AAI loaders, Lane splitters: Apply recipe changes only when AAI Industry is active + - AAI Loaders: Adhere belt progression setting +--------------------------------------------------------------------------------------------------- Version: 1.0.38 Date: 28.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 6988e40..18bda49 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.38", + "version": "1.0.39", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", @@ -9,7 +9,7 @@ "space_travel_required": true, "dependencies": [ "base", - "space-age >= 2.0.28", + "space-age >= 2.0.33", "astroponics >= 1.2.0", "bioprocessing-tab", "cf-lib >= 0.0.8", From 17c2795b3df7c427b62d8444ab339b90902d9177 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 6 Apr 2025 11:27:12 +0200 Subject: [PATCH 082/150] Add fix for duplicate ready rocket silo --- lignumis/scripts/wooden-rocket-silo.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lignumis/scripts/wooden-rocket-silo.lua b/lignumis/scripts/wooden-rocket-silo.lua index 9b132a3..c0890cf 100644 --- a/lignumis/scripts/wooden-rocket-silo.lua +++ b/lignumis/scripts/wooden-rocket-silo.lua @@ -106,7 +106,9 @@ local function on_silo_mined(event) local player = game.get_player(event.player_index) for i, entry in pairs(storage.rocket_silos) do if entry.fake_silo == fake_silo then - player.mine_entity(entry.real_silo, true) + if entry.real_silo.valid then + player.mine_entity(entry.real_silo, true) + end table.remove(storage.rocket_silos, i) break end From 51e9682125ea2785089cb9aa446a1c3ff83245f0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 6 Apr 2025 11:27:55 +0200 Subject: [PATCH 083/150] Remove inventory of provisional rocket silo --- lignumis/prototypes/content/wooden-rocket-silo.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lignumis/prototypes/content/wooden-rocket-silo.lua b/lignumis/prototypes/content/wooden-rocket-silo.lua index 4a224a8..ab55f70 100644 --- a/lignumis/prototypes/content/wooden-rocket-silo.lua +++ b/lignumis/prototypes/content/wooden-rocket-silo.lua @@ -51,7 +51,7 @@ silo.fluid_boxes_off_when_no_fluid_recipe = true silo.launch_to_space_platforms = false silo.rocket_parts_required = 50 silo.rocket_parts_storage_cap = 50 -silo.to_be_inserted_to_rocket_inventory_size = 1 +silo.to_be_inserted_to_rocket_inventory_size = 0 silo.clamps_on_trigger = { type = "script", effect_id = "provisional-rocket-ready" @@ -122,7 +122,7 @@ local silo_ready = { min = 1 } }, - flags = { "not-on-map", "not-blueprintable", "not-deconstructable", "not-flammable", "not-repairable", "not-upgradable", "no-automated-item-insertion", "no-automated-item-removal", "not-in-kill-statistics" }, + flags = { "not-on-map", "not-blueprintable", "not-flammable", "not-repairable", "not-upgradable", "no-automated-item-insertion", "no-automated-item-removal", "not-in-kill-statistics" }, allow_copy_paste = false, additional_pastable_entities = { "provisional-rocket-silo" }, collision_mask = { layers = {} }, From dffaa9917355e25e722e2d6313da0557d98434b3 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 6 Apr 2025 16:36:53 +0200 Subject: [PATCH 084/150] Add setting for wood on Fulgora and make Wooden Fulgora optional again --- lignumis/info.json | 2 +- lignumis/locale/en/strings.cfg | 2 ++ lignumis/prototypes/integrations/vanilla.lua | 16 +++++++++++++++- lignumis/settings.lua | 7 +++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lignumis/info.json b/lignumis/info.json index 18bda49..2c1c50e 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -14,7 +14,6 @@ "bioprocessing-tab", "cf-lib >= 0.0.8", "flib", - "fulgora-coralmium-agriculture", "InserterFuelLeech", "lignumis-assets >= 1.0.3", "mf-buildings >= 1.0.7", @@ -31,6 +30,7 @@ "?atan-nuclear-science", "?crushing-industry", "?Diversitree", + "?fulgora-coralmium-agriculture", "?gleba-reborn", "?hot-metals >= 1.1.0", "?lane-splitters", diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 06a5daa..944299d 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -178,6 +178,7 @@ lignumis-basic-circuit-board=Enable basic circuit board lignumis-circuit-progression=Enable progressive circuit recipes lignumis-assembler-progression=Enable progressive assembler recipes lignumis-lumber-mill-more-recipes=Enable more recipes for the lumber mill +lignumis-fulgora-wood=Add wood to Fulgora [mod-setting-description] lignumis-belt-progression=Yellow belts will require wood belts to craft. @@ -188,6 +189,7 @@ lignumis-basic-circuit-board=Recipes use basic circuit boards instead of gold ca lignumis-circuit-progression=Electric circuits will require basic circuit boards to craft. lignumis-assembler-progression=Assembling machine 1 will require burner assembling machines to craft. lignumis-lumber-mill-more-recipes=The lumber mill can also craft basic turrets, burner assemblers and burner inserters. Improves balancing wood usage when all progressive recipes are enabled and helps with marathon games. +lignumis-fulgora-wood=This adds wooden gear wheels to scrap recycling as the main source of wood. Disable this is you have a different source of wood or import everything from other planets. [autoplace-control-names] lignumis_enemy_base=Lignumis enemy bases diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index d515473..f8ba80c 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -311,4 +311,18 @@ data.raw["equipment-grid"]["medium-equipment-grid"].height = 8 local nauvis = data.raw.planet["nauvis"] nauvis.flags = nauvis.flags or {} -table.insert(nauvis.flags, "always-show") \ No newline at end of file +table.insert(nauvis.flags, "always-show") + + +-- Fulgora changes + +if settings.startup["lignumis-fulgora-wood"].value then + local recycling = data.raw.recipe["scrap-recycling"] + table.insert(recycling.results, { type = "item", name = "wooden-gear-wheel", amount = 1, probability = 0.2 }) + local recycling_result_count = table.count(recycling.results) + + local recycler = data.raw.furnace["recycler"] + if recycler.result_inventory_size < recycling_result_count then + recycler.result_inventory_size = recycling_result_count + end +end \ No newline at end of file diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 9da7673..55ddb7b 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -55,6 +55,13 @@ data:extend({ default_value = false, order = "h" }, + { + type = "bool-setting", + name = "lignumis-fulgora-wood", + setting_type = "startup", + default_value = true, + order = "i" + }, { type = "string-setting", name = "lignumis-second-planet", From 45f245d422ec3e2ba2d381c7f2840d195820943a Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 6 Apr 2025 16:49:05 +0200 Subject: [PATCH 085/150] 1.0.40 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index ae30ec0..658f101 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.40 +Date: 06.04.2025 + Changes: + - Add setting for wood on Fulgora and make Wooden Fulgora optional again + Bug Fixes: + - Add fix for duplicate ready rocket silo + - Remove inventory of provisional rocket silo +--------------------------------------------------------------------------------------------------- Version: 1.0.39 Date: 28.03.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 2c1c50e..0066f9f 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.39", + "version": "1.0.40", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 22e3f9709e71676b368ecc667530d00b1684531e Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 12 Apr 2025 16:27:11 +0200 Subject: [PATCH 086/150] Helmod: Fix bug with steam assembler --- lignumis/prototypes/content/steam-assembling-machine.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/steam-assembling-machine.lua b/lignumis/prototypes/content/steam-assembling-machine.lua index 208a99a..b548cb4 100644 --- a/lignumis/prototypes/content/steam-assembling-machine.lua +++ b/lignumis/prototypes/content/steam-assembling-machine.lua @@ -30,11 +30,12 @@ assembling_machine.crafting_speed = 0.5 assembling_machine.energy_usage = "25kW" assembling_machine.energy_source = { type = "fluid", - fuel_categories = { "steam" }, + maximum_temperature = 165, effectivity = 1, emissions_per_minute = { noise = 50 }, scale_fluid_usage = true, fluid_box = { + filter = "steam", production_type = "input", pipe_picture = machinepipes(), pipe_covers = pipecovers(), From 667678098da9cbd3d4ae7eaad1f86ef7d0207e74 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 12 Apr 2025 20:13:14 +0200 Subject: [PATCH 087/150] Require cf-lib 0.0.12 --- lignumis/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/info.json b/lignumis/info.json index 0066f9f..6477cf8 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -12,7 +12,7 @@ "space-age >= 2.0.33", "astroponics >= 1.2.0", "bioprocessing-tab", - "cf-lib >= 0.0.8", + "cf-lib >= 0.0.12", "flib", "InserterFuelLeech", "lignumis-assets >= 1.0.3", From aa44117a49b2cc43c064f09a902cadc21e2d7b50 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 12 Apr 2025 20:17:25 +0200 Subject: [PATCH 088/150] Any planet start: Fix prerequisites for "Tree seeding" --- lignumis/prototypes/compatibility/any-planet-start.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index 01a8317..f72a020 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -6,6 +6,9 @@ local target_planet = settings.startup["aps-planet"].value if target_planet == "none" or target_planet == "nauvis" then return end +Technology:new("tree-seeding"):setPrerequisites({ "wood-science-pack" }) + + -- Switch planet discovery technology to the new planet Technology:new("planet-discovery-" .. target_planet) :assign({ From 5bdde48ef187bd31fcf95b3c8e4dc05e0fa197b0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 12 Apr 2025 23:53:47 +0200 Subject: [PATCH 089/150] Any planet start: Fix circular dependency --- lignumis/prototypes/compatibility/any-planet-start.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index f72a020..9022b8e 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -23,7 +23,7 @@ Technology:new("planet-discovery-" .. target_planet) time = 30 } }) - :addPrerequisite("provisional-rocketry") + :setPrerequisites({ "provisional-rocketry" }) Technology:new("iron-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet) Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet) From c8959290c0722db9c8f08f1884d93101fc4972b7 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 13 Apr 2025 00:14:47 +0200 Subject: [PATCH 090/150] Wood Gasification updated: Fix amount of wood per tree --- lignumis/info.json | 1 + lignumis/prototypes/integrations/vanilla.lua | 1 + 2 files changed, 2 insertions(+) diff --git a/lignumis/info.json b/lignumis/info.json index 6477cf8..34da087 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -35,6 +35,7 @@ "?hot-metals >= 1.1.0", "?lane-splitters", "?metal-and-stars", + "?Wood_Gasification_updated", "?wood-industry", "?wood-military >= 2.3.3", "!apm_power_ldinc", diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index f8ba80c..c97872c 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -102,6 +102,7 @@ for _, tree in pairs(data.raw.tree) do local woodResult = { type = "item", name = "wood", amount = nil, amount_min = 2, amount_max = 10 } if minable.results and #woodResults > 0 then table.assign(woodResults[1], woodResult) + woodResults[1].amount = nil else minable.results = { woodResult } end From e18619c807cf7abf2ebe77b6905403e22d0d2127 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 13 Apr 2025 13:42:42 +0200 Subject: [PATCH 091/150] Add setting for even earlier personal robots --- lignumis/locale/en/strings.cfg | 2 ++ .../content/basic-construction-robots.lua | 20 ++++++++++--------- lignumis/settings.lua | 7 +++++++ 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 944299d..8213404 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -179,6 +179,7 @@ lignumis-circuit-progression=Enable progressive circuit recipes lignumis-assembler-progression=Enable progressive assembler recipes lignumis-lumber-mill-more-recipes=Enable more recipes for the lumber mill lignumis-fulgora-wood=Add wood to Fulgora +lignumis-early-robots=Even earlier personal robots [mod-setting-description] lignumis-belt-progression=Yellow belts will require wood belts to craft. @@ -190,6 +191,7 @@ lignumis-circuit-progression=Electric circuits will require basic circuit boards lignumis-assembler-progression=Assembling machine 1 will require burner assembling machines to craft. lignumis-lumber-mill-more-recipes=The lumber mill can also craft basic turrets, burner assemblers and burner inserters. Improves balancing wood usage when all progressive recipes are enabled and helps with marathon games. lignumis-fulgora-wood=This adds wooden gear wheels to scrap recycling as the main source of wood. Disable this is you have a different source of wood or import everything from other planets. +lignumis-early-robots=Personal robots are moved from steam to wood science and are a tiny bit faster. [autoplace-control-names] lignumis_enemy_base=Lignumis enemy bases diff --git a/lignumis/prototypes/content/basic-construction-robots.lua b/lignumis/prototypes/content/basic-construction-robots.lua index 731dac5..95cae5b 100644 --- a/lignumis/prototypes/content/basic-construction-robots.lua +++ b/lignumis/prototypes/content/basic-construction-robots.lua @@ -2,6 +2,7 @@ local item_sounds = require("__base__.prototypes.item_sounds") local item_tints = require("__base__.prototypes.item-tints") local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value +local early_robots = settings.startup["lignumis-early-robots"].value local function robot(color) local result = table.deepcopy(data.raw["construction-robot"]["construction-robot"]) @@ -9,7 +10,7 @@ local function robot(color) result.icon = Lignumis.graphics .. "icons/basic-construction-robot-" .. color .. ".png" result.minable.result = "basic-construction-robot-" .. color result.max_health = 50 - result.speed = 0.04 + result.speed = early_robots and 0.05 or 0.04 result.max_energy = "1MJ" result.energy_per_tick = "0.04kJ" result.energy_per_move = "0.3kJ" @@ -180,15 +181,16 @@ local gold_robot_technology = { modifier = true } }, - prerequisites = { "steam-science-pack" }, + prerequisites = { early_robots and "wood-science-pack" or "steam-science-pack" }, unit = { count = 200, - ingredients = { + ingredients = early_robots and { { "wood-science-pack", 1 } } or { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }, time = 15 - } + }, + ignore_tech_cost_multiplier = early_robots } local copper_robot_technology = { @@ -248,22 +250,22 @@ data:extend({ robot("copper"), robot_item("copper", 1), robot_recipe("copper", { - { type = "item", name = "copper-plate", amount = 2 }, - { type = "item", name = "wooden-gear-wheel", amount = 5 }, + { type = "item", name = "copper-plate", amount = 2 }, + { type = "item", name = "wooden-gear-wheel", amount = 5 }, { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 5 } }), generator("copper"), generator_item("copper", 1), generator_recipe("copper", { - { type = "item", name = "copper-plate", amount = 10 }, + { type = "item", name = "copper-plate", amount = 10 }, { type = "item", name = "wooden-gear-wheel", amount = 10 } }), roboport("copper"), roboport_item("copper", 1), roboport_recipe("copper", { - { type = "item", name = "copper-plate", amount = 5 }, + { type = "item", name = "copper-plate", amount = 5 }, { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 }, - { type = "item", name = "wooden-gear-wheel", amount = 10 } + { type = "item", name = "wooden-gear-wheel", amount = 10 } }), -- Technology diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 55ddb7b..9b2d2ca 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -62,6 +62,13 @@ data:extend({ default_value = true, order = "i" }, + { + type = "bool-setting", + name = "lignumis-early-robots", + setting_type = "startup", + default_value = false, + order = "j" + }, { type = "string-setting", name = "lignumis-second-planet", From 7416b4a505ee0b8cf5a818f53d0cb801efca9cd5 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 13 Apr 2025 15:09:36 +0200 Subject: [PATCH 092/150] Prevent broken icons --- lignumis/prototypes/content/basic-circuit-board.lua | 2 +- lignumis/prototypes/content/burner-agricultural-tower.lua | 2 +- lignumis/prototypes/content/burner-assembling-machine.lua | 2 +- lignumis/prototypes/content/steam-assembling-machine.lua | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lignumis/prototypes/content/basic-circuit-board.lua b/lignumis/prototypes/content/basic-circuit-board.lua index 7c12dcc..04dbf0a 100644 --- a/lignumis/prototypes/content/basic-circuit-board.lua +++ b/lignumis/prototypes/content/basic-circuit-board.lua @@ -7,7 +7,7 @@ data:extend({ { type = "item", name = "basic-circuit-board", - icon = Lignumis.graphics .. "icons/basic-circuit-board.png", + icons = { { icon = Lignumis.graphics .. "icons/basic-circuit-board.png", icon_size = 64 } }, subgroup = "intermediate-product", order = "c[circuits]-0[basic-circuit-board]", inventory_move_sound = item_sounds.electric_small_inventory_move, diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index d87f022..127c2fe 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -9,7 +9,7 @@ agricultural_tower.name = "burner-agricultural-tower" agricultural_tower.minable.result = "burner-agricultural-tower" agricultural_tower.next_upgrade = "agricultural-tower" agricultural_tower.corpses = "burner-agricultural-tower-remnants" -agricultural_tower.icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" +agricultural_tower.icons = { { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png", icon_size = 64 } } agricultural_tower.graphics_set.animation.layers[1].filename = gfx .. "burner-agricultural-tower-base.png" agricultural_tower.graphics_set.working_visualisations[1].animation.filename = gfx .. "burner-agricultural-tower-base.png" diff --git a/lignumis/prototypes/content/burner-assembling-machine.lua b/lignumis/prototypes/content/burner-assembling-machine.lua index a0893e7..58cd14b 100644 --- a/lignumis/prototypes/content/burner-assembling-machine.lua +++ b/lignumis/prototypes/content/burner-assembling-machine.lua @@ -5,7 +5,7 @@ local gfx = Lignumis.graphics .. "entity/burner-assembling-machine/" local assembling_machine = table.deepcopy(data.raw["assembling-machine"]["assembling-machine-1"]) assembling_machine.name = "burner-assembling-machine" -assembling_machine.icon = Lignumis.graphics .. "icons/burner-assembling-machine.png" +assembling_machine.icons = { { icon = Lignumis.graphics .. "icons/burner-assembling-machine.png", icon_size = 64 } } assembling_machine.minable.result = "burner-assembling-machine" assembling_machine.next_upgrade = "steam-assembling-machine" assembling_machine.corpse = "burner-assembling-machine-remnants" diff --git a/lignumis/prototypes/content/steam-assembling-machine.lua b/lignumis/prototypes/content/steam-assembling-machine.lua index b548cb4..099ee7d 100644 --- a/lignumis/prototypes/content/steam-assembling-machine.lua +++ b/lignumis/prototypes/content/steam-assembling-machine.lua @@ -6,7 +6,7 @@ local gfx = Lignumis.graphics .. "entity/steam-assembling-machine/" local assembling_machine = table.deepcopy(data.raw["assembling-machine"]["assembling-machine-2"]) assembling_machine.name = "steam-assembling-machine" -assembling_machine.icon = Lignumis.graphics .. "icons/steam-assembling-machine.png" +assembling_machine.icons = { { icon = Lignumis.graphics .. "icons/steam-assembling-machine.png", icon_size = 64 } } assembling_machine.minable.result = "steam-assembling-machine" assembling_machine.next_upgrade = "assembling-machine-1" assembling_machine.module_slots = nil From 77685f2a3ef324493f85a061ef826376e289ac78 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 13 Apr 2025 15:11:42 +0200 Subject: [PATCH 093/150] 1.0.41 --- lignumis/changelog.txt | 11 +++++++++++ lignumis/info.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 658f101..2fa453c 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,15 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.41 +Date: 13.04.2025 + Changes: + - Add setting for even earlier personal robots + Bug Fixes: + - Prevent broken icons + - Helmod: Fix bug with steam assembler + - Any planet start: Fix prerequisites for "Tree seeding" + - Any planet start: Fix circular dependency + - Wood Gasification updated: Fix amount of wood per tree +--------------------------------------------------------------------------------------------------- Version: 1.0.40 Date: 06.04.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 34da087..cb9867c 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.40", + "version": "1.0.41", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From e7077ef65b4bc871af0286eface9081de52fe192 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 13 Apr 2025 22:50:16 +0200 Subject: [PATCH 094/150] Helmod: Fix bug with steam assembler (now really) --- lignumis/prototypes/content/steam-assembling-machine.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lignumis/prototypes/content/steam-assembling-machine.lua b/lignumis/prototypes/content/steam-assembling-machine.lua index 099ee7d..2a6322c 100644 --- a/lignumis/prototypes/content/steam-assembling-machine.lua +++ b/lignumis/prototypes/content/steam-assembling-machine.lua @@ -33,7 +33,6 @@ assembling_machine.energy_source = { maximum_temperature = 165, effectivity = 1, emissions_per_minute = { noise = 50 }, - scale_fluid_usage = true, fluid_box = { filter = "steam", production_type = "input", From d03dfeb643348a4058c97730ccbcb78a9f0446fc Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 14 Apr 2025 14:21:54 +0200 Subject: [PATCH 095/150] Crushing Industry: Fix wrong ingredient amount for gold from crushed gold --- lignumis/prototypes/compatibility/crushing-industry.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/prototypes/compatibility/crushing-industry.lua b/lignumis/prototypes/compatibility/crushing-industry.lua index 863c44b..2f62662 100644 --- a/lignumis/prototypes/compatibility/crushing-industry.lua +++ b/lignumis/prototypes/compatibility/crushing-industry.lua @@ -53,7 +53,7 @@ data:extend({ auto_recycle = false, hide_from_player_crafting = settings.startup["crushing-industry-hide-player-crafting"].value, energy_required = 3.2, - ingredients = { { type = "item", name = "crushed-gold-ore", amount = 1 } }, + ingredients = { { type = "item", name = "crushed-gold-ore", amount = 2 } }, results = { { type = "item", name = "gold-plate", amount = 1 } }, main_product = "gold-plate", }, From 656a151075705d5ed2862007ef5c4f3451021039 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 14 Apr 2025 15:42:11 +0200 Subject: [PATCH 096/150] 1.0.42 --- lignumis/changelog.txt | 6 ++++++ lignumis/info.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 2fa453c..09f3552 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,10 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.42 +Date: 14.04.2025 + Bug Fixes: + - Helmod: Fix bug with steam assembler (now really) + - Crushing Industry: Fix wrong ingredient amount for gold from crushed gold (BREAKING) +--------------------------------------------------------------------------------------------------- Version: 1.0.41 Date: 13.04.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index cb9867c..d44fb30 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.41", + "version": "1.0.42", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 58da2ed2d4c98baadff36a3c7116f45b9526c071 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 15 Apr 2025 18:08:19 +0200 Subject: [PATCH 097/150] Any planet start: Move code to updates stage --- lignumis/prototypes/compatibility/final.lua | 1 - lignumis/prototypes/compatibility/updates.lua | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lignumis/prototypes/compatibility/final.lua b/lignumis/prototypes/compatibility/final.lua index 46b180a..ddb16d2 100644 --- a/lignumis/prototypes/compatibility/final.lua +++ b/lignumis/prototypes/compatibility/final.lua @@ -1,5 +1,4 @@ require("aai-loaders-final") -require("any-planet-start") if not data.raw.technology["legendary-quality"] then table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality") diff --git a/lignumis/prototypes/compatibility/updates.lua b/lignumis/prototypes/compatibility/updates.lua index 131611d..ac032ba 100644 --- a/lignumis/prototypes/compatibility/updates.lua +++ b/lignumis/prototypes/compatibility/updates.lua @@ -1,2 +1,3 @@ require("aai-industry") -require("gleba-reborn") \ No newline at end of file +require("gleba-reborn") +require("any-planet-start") \ No newline at end of file From a6a14615810b628834a90c2c859a664def80d7fe Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 20 Apr 2025 16:58:12 +0200 Subject: [PATCH 098/150] Correct description of the Quality Assembler --- lignumis/locale/en/strings.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 8213404..4cbe90d 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -52,7 +52,7 @@ lignumis-medium-wriggler-pentapod=Lignumis medium wiggler pentapod [entity-description] lumber-mill=Advanced machine to process wood. -quality-assembler=High-end assembler to craft only the finest quality machines. It gives one free quality tier to the crafted item by consuming [item=gold-quality-catalyst]. Surface conditions and ingredients are otherwise unchanged. +quality-assembler=High-end assembler to craft only the finest quality machines. It gives 25% additional quality by consuming [item=gold-quality-catalyst]. Surface conditions and ingredients are otherwise unchanged. gold-stromatolite-plant=Harvest gold stromatolites for bacteria that enrich gold from the ground.\n__REMARK_COLOR_BEGIN__Expected yield:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m [equipment-name] From 67b4ec0a09636efaf4476452791759c6592f4d6f Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 20 Apr 2025 16:58:57 +0200 Subject: [PATCH 099/150] Any planet start (Vulcanus): Add some fixes to not get stuck --- lignumis/prototypes/compatibility/any-planet-start.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index 9022b8e..6bb4f27 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -36,9 +36,11 @@ if target_planet == "vulcanus" then Technology:new("iron-processing").prototype.research_trigger.entity = "big-volcanic-rock" Technology:new("copper-processing").prototype.research_trigger.entity = "big-volcanic-rock" - if mods["crushing-industry"] then - Technology:new("concrete"):addRecipe("crushed-iron-ore") - Technology:new("ore-crushing"):removeRecipe("crushed-iron-ore") + data.raw.resource["tungsten-ore"].category = "basic-solid" + + if mods["bztitanium"] and mods["crushing-industry"] then + Technology:new("foundry"):addRecipe("crushed-titanium-ore") + data.raw.recipe["crushed-titanium-ore"].category = "basic-crushing" end end From 3fffc31f2dc7242432aa2d126d4bc9163d7c6549 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 20 Apr 2025 23:08:58 +0200 Subject: [PATCH 100/150] Crushing Industry: Move compatibility code to updates phase --- lignumis/prototypes/compatibility/data.lua | 3 +-- lignumis/prototypes/compatibility/updates.lua | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index 6d649e2..8f4bb5b 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -5,5 +5,4 @@ require("alien-biomes") require("aai-loaders") require("nuclear-science") require("lane-splitters") -require("wood-industry") -require("crushing-industry") \ No newline at end of file +require("wood-industry") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/updates.lua b/lignumis/prototypes/compatibility/updates.lua index ac032ba..8df0677 100644 --- a/lignumis/prototypes/compatibility/updates.lua +++ b/lignumis/prototypes/compatibility/updates.lua @@ -1,3 +1,4 @@ require("aai-industry") require("gleba-reborn") -require("any-planet-start") \ No newline at end of file +require("any-planet-start") +require("crushing-industry") \ No newline at end of file From 60a5e3764719574a863be0ea1c86e6fcd83f3397 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 20 Apr 2025 23:10:31 +0200 Subject: [PATCH 101/150] 1.0.43 --- lignumis/changelog.txt | 9 +++++++++ lignumis/info.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 09f3552..13162b9 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,13 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.43 +Date: 20.04.2025 + Changes: + - Any planet start: Move code to updates stage + Bug Fixes: + - Correct description of the Quality Assembler + - Any planet start (Vulcanus): Add some fixes to not get stuck + - Crushing Industry: Move compatibility code to updates phase to prevent crash +--------------------------------------------------------------------------------------------------- Version: 1.0.42 Date: 14.04.2025 Bug Fixes: diff --git a/lignumis/info.json b/lignumis/info.json index d44fb30..722022b 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.42", + "version": "1.0.43", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 596077912fc094e02702e05b7eac0066ea4e10a1 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 20 Apr 2025 23:20:09 +0200 Subject: [PATCH 102/150] 1.0.44 --- lignumis/changelog.txt | 5 +++++ lignumis/info.json | 7 ++++--- lignumis/prototypes/content/gold/intermediates.lua | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 13162b9..a5e5f73 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.44 +Date: 20.04.2025 + Bug Fixes: + - Add Secretas optional dependency to fix loading order +--------------------------------------------------------------------------------------------------- Version: 1.0.43 Date: 20.04.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 722022b..4580692 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.43", + "version": "1.0.44", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", @@ -34,8 +34,9 @@ "?gleba-reborn", "?hot-metals >= 1.1.0", "?lane-splitters", - "?metal-and-stars", - "?Wood_Gasification_updated", + "(?)metal-and-stars", + "(?)secretas", + "(?)Wood_Gasification_updated", "?wood-industry", "?wood-military >= 2.3.3", "!apm_power_ldinc", diff --git a/lignumis/prototypes/content/gold/intermediates.lua b/lignumis/prototypes/content/gold/intermediates.lua index 90c92a2..4848e32 100644 --- a/lignumis/prototypes/content/gold/intermediates.lua +++ b/lignumis/prototypes/content/gold/intermediates.lua @@ -12,7 +12,8 @@ data:extend({ inventory_move_sound = item_sounds.metal_small_inventory_move, pick_sound = item_sounds.metal_small_inventory_pickup, drop_sound = item_sounds.metal_small_inventory_move, - stack_size = 100 + stack_size = 100, + enabled = true }, { type = "recipe", From 90a59a7f4706d888af4a57d12c0a1729466d968a Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 3 May 2025 23:00:02 +0200 Subject: [PATCH 103/150] Any Planet Start: Fix planet discovery being disabled --- .../compatibility/any-planet-start-final.lua | 14 ++++++++++++++ lignumis/prototypes/compatibility/final.lua | 1 + 2 files changed, 15 insertions(+) create mode 100644 lignumis/prototypes/compatibility/any-planet-start-final.lua diff --git a/lignumis/prototypes/compatibility/any-planet-start-final.lua b/lignumis/prototypes/compatibility/any-planet-start-final.lua new file mode 100644 index 0000000..668cc66 --- /dev/null +++ b/lignumis/prototypes/compatibility/any-planet-start-final.lua @@ -0,0 +1,14 @@ +local Technology = require("__cf-lib__/data/Technology") + +if not mods["any-planet-start"] then return end + +local target_planet = settings.startup["aps-planet"].value + +if target_planet == "none" or target_planet == "nauvis" then return end + +-- Switch planet discovery technology to the new planet +Technology:new("planet-discovery-" .. target_planet) + :assign({ + enabled = true, + hidden = false + }) diff --git a/lignumis/prototypes/compatibility/final.lua b/lignumis/prototypes/compatibility/final.lua index ddb16d2..db0c1dd 100644 --- a/lignumis/prototypes/compatibility/final.lua +++ b/lignumis/prototypes/compatibility/final.lua @@ -1,4 +1,5 @@ require("aai-loaders-final") +require("any-planet-start-final") if not data.raw.technology["legendary-quality"] then table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality") From 9f924c3aea1d07785cd089c0ebebcb80180a24af Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 3 May 2025 23:00:57 +0200 Subject: [PATCH 104/150] 1.0.45 --- lignumis/changelog.txt | 5 +++++ lignumis/info.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index a5e5f73..7f202c7 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.45 +Date: 03.05.2025 + Bug Fixes: + - Any Planet Start: Fix planet discovery being disabled +--------------------------------------------------------------------------------------------------- Version: 1.0.44 Date: 20.04.2025 Bug Fixes: diff --git a/lignumis/info.json b/lignumis/info.json index 4580692..5557722 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.44", + "version": "1.0.45", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From f98bbebdabdbbd48464a36e059d480b8cfcc31bf Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 23 May 2025 13:58:20 +0200 Subject: [PATCH 105/150] Solar power is orbiting planet +20% --- lignumis/prototypes/content/lignumis/planet.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lignumis/prototypes/content/lignumis/planet.lua b/lignumis/prototypes/content/lignumis/planet.lua index 971e0b0..f21ccd1 100644 --- a/lignumis/prototypes/content/lignumis/planet.lua +++ b/lignumis/prototypes/content/lignumis/planet.lua @@ -21,6 +21,11 @@ local nauvis_lignumis = { } } +local solar_power = data.raw.planet[target_planet].surface_properties["solar-power"] or 100 +local solar_power_in_space = data.raw.planet[target_planet].solar_power_in_space or 300 +solar_power = solar_power * 1.2 +solar_power_in_space = solar_power_in_space * 1.2 + PlanetsLib:extend({ { type = "planet", @@ -48,7 +53,7 @@ PlanetsLib:extend({ map_seed_offset = 100, map_gen_settings = planet_map_gen, pollutant_type = "noise", - solar_power_in_space = 300, + solar_power_in_space = solar_power_in_space, draw_orbit = false, planet_procession_set = { arrival = { "default-b" }, @@ -58,7 +63,7 @@ PlanetsLib:extend({ ["day-night-cycle"] = 2 * minute, ["gravity"] = 4, ["pressure"] = 900, - ["solar-power"] = 120 + ["solar-power"] = solar_power }, asteroid_spawn_influence = 1, asteroid_spawn_definitions = asteroid_util.spawn_definitions(nauvis_lignumis, 0.9), From c968a7e4377b0a62cf11cf4d627187b8a655095d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 23 May 2025 13:58:52 +0200 Subject: [PATCH 106/150] Correct items per rocket for belts --- lignumis/prototypes/content/wood-logistics.lua | 3 +++ lignumis/prototypes/integrations/vanilla.lua | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/lignumis/prototypes/content/wood-logistics.lua b/lignumis/prototypes/content/wood-logistics.lua index 6d180d4..1e3820a 100644 --- a/lignumis/prototypes/content/wood-logistics.lua +++ b/lignumis/prototypes/content/wood-logistics.lua @@ -21,6 +21,9 @@ Belt.EntityBuilder:new() }) local splitter_item = Belt.ItemBuilder:new() + :itemsPerRocket("transportBelt", 100) + :itemsPerRocket("undergroundBelt", 50) + :itemsPerRocket("splitter", 50) :order("0") :apply() .splitter diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index c97872c..e3946ca 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -1,5 +1,6 @@ local Technology = require("__cf-lib__/data/Technology") 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 @@ -69,6 +70,7 @@ Recipe:new("lab"):replaceIngredient("transport-belt", "wood-transport-belt") -- Gun turret data.raw["ammo-turret"]["gun-turret"].attack_parameters.range = 20 +Item:new("gun-turret"):itemsPerRocket(50) -- Agricultural tower @@ -82,6 +84,9 @@ if agricultural_tower.surface_conditions then end end +-- Solar panal +Item:new("solar-panel"):itemsPerRocket(50) + -- Wood processing @@ -142,6 +147,9 @@ if settings.startup["lignumis-belt-progression"].value then Recipe:new("transport-belt"):replaceIngredient("iron-plate", "wood-transport-belt", 2) Recipe:new("underground-belt"):replaceIngredient("transport-belt", "wood-underground-belt", 2) Recipe:new("splitter"):replaceIngredient("transport-belt", "wood-splitter", 1) + Item:new("transport-belt"):itemsPerRocket(100) + Item:new("underground-belt"):itemsPerRocket(50) + Item:new("splitter"):itemsPerRocket(50) end if settings.startup["lignumis-inserter-progression"].value then From 8da7d0cea7c91854add74b3125f75630282d05e1 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 23 May 2025 14:00:01 +0200 Subject: [PATCH 107/150] Balance basic robots battery usage --- lignumis/prototypes/content/basic-construction-robots.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lignumis/prototypes/content/basic-construction-robots.lua b/lignumis/prototypes/content/basic-construction-robots.lua index 95cae5b..fef1bd7 100644 --- a/lignumis/prototypes/content/basic-construction-robots.lua +++ b/lignumis/prototypes/content/basic-construction-robots.lua @@ -11,9 +11,9 @@ local function robot(color) result.minable.result = "basic-construction-robot-" .. color result.max_health = 50 result.speed = early_robots and 0.05 or 0.04 - result.max_energy = "1MJ" - result.energy_per_tick = "0.04kJ" - result.energy_per_move = "0.3kJ" + result.max_energy = early_robots and "1.5MJ" or "1MJ" + result.energy_per_tick = early_robots and "0.03kJ" or "0.04kJ" + result.energy_per_move = early_robots and "2kJ" or "2.5kJ" result.idle.filename = Lignumis.graphics .. "entity/basic-construction-robot/basic-construction-robot-" .. color .. ".png" result.in_motion.filename = Lignumis.graphics .. "entity/basic-construction-robot/basic-construction-robot-" .. From 415054ae2b1524700bbae00d31c432cf7bf76a84 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 23 May 2025 21:07:47 +0200 Subject: [PATCH 108/150] 1.0.46 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 7f202c7..bc759bb 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.46 +Date: 23.05.2025 + Changes: + - Set solar power to orbiting planet's +20% + - Balance basic robots battery usage + Bug Fixes: + - Correct some item weights +--------------------------------------------------------------------------------------------------- Version: 1.0.45 Date: 03.05.2025 Bug Fixes: diff --git a/lignumis/info.json b/lignumis/info.json index 5557722..076ff76 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.45", + "version": "1.0.46", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", @@ -12,7 +12,7 @@ "space-age >= 2.0.33", "astroponics >= 1.2.0", "bioprocessing-tab", - "cf-lib >= 0.0.12", + "cf-lib >= 0.0.13", "flib", "InserterFuelLeech", "lignumis-assets >= 1.0.3", From 81214f2a46e6126a97f7ef036e006fc74cf15dd5 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 30 May 2025 21:48:47 +0200 Subject: [PATCH 109/150] Fix crash when there is a tree that has no minable property --- lignumis/prototypes/integrations/vanilla.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index e3946ca..7a25919 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -99,6 +99,7 @@ for _, tree in pairs(data.raw.tree) do return result.name == "wood" end local minable = tree.minable + if not minable then goto continue end local woodResults = minable.results and table.filter(minable.results, isWoodResult) local isRegularTree = (minable.result == "wood" and minable.count == 4) or (minable.results and #minable.results == 1 and #woodResults == 1 and woodResults[1].amount == 4) if not isRegularTree then goto continue end From f8671cf73895d6ca2a73cd7eb6e704c73cde9bf0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 30 May 2025 21:54:11 +0200 Subject: [PATCH 110/150] Fix crash when the on_rocket_launched event doesn't have a rocket_silo --- lignumis/scripts/to-nauvis.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/scripts/to-nauvis.lua b/lignumis/scripts/to-nauvis.lua index f9aed80..7dfbd82 100644 --- a/lignumis/scripts/to-nauvis.lua +++ b/lignumis/scripts/to-nauvis.lua @@ -58,7 +58,7 @@ end ToNauvis.events[defines.events.on_rocket_launched] = function(event) - if event.rocket_silo.name ~= "provisional-rocket-silo" then return end + if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end local rocket_entry local rocket_entry_index From 07cb973c001707639a108c3659f47325f2d389cf Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 30 May 2025 22:35:49 +0200 Subject: [PATCH 111/150] Correct Factoriopedia simulation for wooden underground belts --- lignumis/prototypes/content/wood-logistics.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lignumis/prototypes/content/wood-logistics.lua b/lignumis/prototypes/content/wood-logistics.lua index 1e3820a..08c3a1f 100644 --- a/lignumis/prototypes/content/wood-logistics.lua +++ b/lignumis/prototypes/content/wood-logistics.lua @@ -13,7 +13,19 @@ Belt.EntityBuilder:new() emissions_per_second = { noise = 0.04 } }, undergroundBelt = { - emissions_per_second = { noise = 0.25 } + emissions_per_second = { noise = 0.25 }, + factoriopedia_simulation = { + init = + [[ + game.simulation.camera_position = {0, 0.5} + game.simulation.camera_zoom = 1.8 + game.surfaces[1].create_entities_from_blueprint_string + { + string = "0eNqVUNsKgzAM/Zc81+FEBfsrYwwvQQKaltpuivjvS3Wwh8HGnkKSc0tWaIaA1hF70CtMXNvEm6R31MV+Bl0oWECfNwXUGp5AXwRGPddDBHA9Imh4GNMlgTt0vTNSkwYHD5EjsznSrwqQPXnCQ2JvlhuHsUEnAPVdSoE1k7ANv2KlpyOYVLHpyGF7bHMFfrFRidiGGOLDLPvXLP9tZoLf3eRO8jjK5P1YBXd0004oyqzKq6ooqzLNinLbnvlmf6E=", + position = {-0.5, 0} + } + ]] + } }, splitter = { emissions_per_second = { noise = 0.5 } From 68903532bfda96216232a3852287cd38f709d6cd Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 31 May 2025 22:58:50 +0200 Subject: [PATCH 112/150] 1.0.47 --- lignumis/changelog.txt | 7 +++++++ lignumis/info.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index bc759bb..f2f469a 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,11 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.47 +Date: 31.05.2025 + Bug Fixes: + - Fix crash when there is a tree that has no minable property + - Fix crash when the on_rocket_launched event doesn't have a rocket_silo + - Correct Factoriopedia simulation for wooden underground belts +--------------------------------------------------------------------------------------------------- Version: 1.0.46 Date: 23.05.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 076ff76..eb76a6c 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.46", + "version": "1.0.47", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 6fc153f3bd55bae37960d110802c6cf000a59e34 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 3 Jun 2025 16:50:26 +0200 Subject: [PATCH 113/150] Make InserterFuelLeech optional --- README.md | 8 ++++++++ lignumis/info.json | 1 - lignumis/scripts/init.lua | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1166cc6..c6cb374 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,14 @@ The duration of the stay on Lignumis will be rather short. The impact of the lat The following mods can be a great addition for this mod: +#### [Inserter Fuel Leech](https://mods.factorio.com/mod/InserterFuelLeech) + +While optional, the intended way is to use this mod for the burner phase as it improves the fueling experience of burner entities. + +For UPS optimizations, you can disable this mod once the burner phase is over. + +Alternatives: [Burner Leech Fork](https://mods.factorio.com/mod/Burner-Leech-Fork), [Burner Leech](https://mods.factorio.com/mod/Burner-Leech) + #### [Any Planet Start](https://mods.factorio.com/mod/any-planet-start) Allows you to choose the planet that Lignumis orbits. You can continue on Vulcanus, Fulgora or Gleba after leaving Lignumis. diff --git a/lignumis/info.json b/lignumis/info.json index eb76a6c..5b6ba42 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -14,7 +14,6 @@ "bioprocessing-tab", "cf-lib >= 0.0.13", "flib", - "InserterFuelLeech", "lignumis-assets >= 1.0.3", "mf-buildings >= 1.0.7", "mf-core >= 1.0.3", diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index 8ca9832..ad58805 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -71,6 +71,10 @@ Init.events[defines.events.on_player_created] = function(event) 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 + if not script.active_mods["any-planet-start"] then init_player(event) init_freeplay(event) From 07df28273d7f20f642418b2dd2ec4159999cd356 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 3 Jun 2025 19:36:38 +0200 Subject: [PATCH 114/150] Improve transition to Nauvis --- README.md | 1 - lignumis/scripts/to-nauvis.lua | 70 ++++++++++++++++++------- lignumis/scripts/wooden-rocket-silo.lua | 2 + 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c6cb374..4669975 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,6 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" - 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 -- Improve transition to Nauvis a bit more - 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/scripts/to-nauvis.lua b/lignumis/scripts/to-nauvis.lua index 7dfbd82..3985a75 100644 --- a/lignumis/scripts/to-nauvis.lua +++ b/lignumis/scripts/to-nauvis.lua @@ -29,7 +29,7 @@ end local function teleport_player(player) local nauvis = game.planets[storage.target_planet].surface if player.surface.name == "lignumis" then - local position = nauvis.find_non_colliding_position("character", { 0, 0 }, 100, 1) or { 0, 0 } + local position = nauvis.find_non_colliding_position("character", { 2, 2 }, 100, 1) or { 0, 0 } player.teleport(position, storage.target_planet) chart_starting_area(nauvis, player) end @@ -57,35 +57,69 @@ local function init_freeplay() end -ToNauvis.events[defines.events.on_rocket_launched] = function(event) - if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end +local function transit_player(player_index) + local player = game.get_player(player_index) + local transition = storage.transitions[player_index] - local rocket_entry - local rocket_entry_index - local player - - for i, entry in pairs(storage.rocket_silos) do - if entry.real_silo == event.rocket_silo then - rocket_entry = entry - rocket_entry_index = i - player = entry.player and game.get_player(entry.player) or game.players[1] - break - end - end + transition.rocket_entry.cargo_pod.set_passenger(nil) + transition.rocket_entry.cargo_pod.destroy() init_nauvis() teleport_player(player) init_freeplay() -- Give the player the content of the rocket - if rocket_entry.rocket_content then + if transition.rocket_entry.rocket_content then local inventory = player.get_main_inventory() - for _, item in pairs(rocket_entry.rocket_content) do + for _, item in pairs(transition.rocket_entry.rocket_content) do inventory.insert(item) end inventory.sort_and_merge() end - table.remove(storage.rocket_silos, rocket_entry_index) + table.remove(storage.rocket_silos, transition.rocket_entry_index) +end + + +local function explode_silo(silo) + silo.die() +end + +ToNauvis.events[defines.events.on_rocket_launch_ordered] = function(event) + if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end + + local player + + for i, entry in pairs(storage.rocket_silos) do + if entry.real_silo == event.rocket_silo then + if not storage.transitions then + storage.transitions = {} + end + player = entry.player and game.get_player(entry.player) or game.players[1] + storage.transitions[player.index] = { + rocket_entry = entry, + rocket_entry_index = i + } + break + end + end + + local transit_tick = game.tick + (26 * 59) + local explode_tick = game.tick + (31 * 59) + + script.on_nth_tick(explode_tick, function() + explode_silo(event.rocket_silo) + script.on_nth_tick(explode_tick, nil) + end) + + script.on_nth_tick(transit_tick, function() + transit_player(player.index) + script.on_nth_tick(transit_tick, nil) + end) +end + +ToNauvis.events[defines.events.on_post_entity_died] = function(event) + if not event.ghost or event.prototype.name ~= "provisional-rocket-silo" then return end + event.ghost.destroy() end return ToNauvis diff --git a/lignumis/scripts/wooden-rocket-silo.lua b/lignumis/scripts/wooden-rocket-silo.lua index c0890cf..7d3795b 100644 --- a/lignumis/scripts/wooden-rocket-silo.lua +++ b/lignumis/scripts/wooden-rocket-silo.lua @@ -92,8 +92,10 @@ local function launch(event) if entry.fake_silo == fake_silo then entry.player = event.player_index entry.rocket_content = rocket_content + entry.cargo_pod = entry.real_silo.rocket.attached_cargo_pod fake_silo.destroy() entry.real_silo.launch_rocket() + entry.cargo_pod.set_passenger(player) break end end From 822eb1fd7c11482fcf60f910efaf857c3bc18493 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 3 Jun 2025 19:51:28 +0200 Subject: [PATCH 115/150] 1.0.48 --- lignumis/changelog.txt | 6 ++++++ lignumis/info.json | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index f2f469a..1e2baf2 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,10 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.48 +Date: 03.06.2025 + Changes: + - Make InserterFuelLeech optional + - Improve transition to Nauvis +--------------------------------------------------------------------------------------------------- Version: 1.0.47 Date: 31.05.2025 Bug Fixes: diff --git a/lignumis/info.json b/lignumis/info.json index 5b6ba42..dd05c72 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.47", + "version": "1.0.48", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", @@ -33,7 +33,7 @@ "?gleba-reborn", "?hot-metals >= 1.1.0", "?lane-splitters", - "(?)metal-and-stars", + "?metal-and-stars", "(?)secretas", "(?)Wood_Gasification_updated", "?wood-industry", From e56b5a708771eb000595bf68644de443519867f7 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 3 Jun 2025 19:53:10 +0200 Subject: [PATCH 116/150] Correct indentation --- lignumis/changelog.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 1e2baf2..ab9941a 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -2,8 +2,8 @@ Version: 1.0.48 Date: 03.06.2025 Changes: - - Make InserterFuelLeech optional - - Improve transition to Nauvis + - Make InserterFuelLeech optional + - Improve transition to Nauvis --------------------------------------------------------------------------------------------------- Version: 1.0.47 Date: 31.05.2025 From 57b3ee9ece23d6c698f8e1a3f44056478fdd7c0e Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 3 Jun 2025 22:51:33 +0200 Subject: [PATCH 117/150] Enable burner leech when no dedicated mod is installed --- lignumis/data-final-fixes.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lignumis/data-final-fixes.lua b/lignumis/data-final-fixes.lua index 02e2978..bbdacb8 100644 --- a/lignumis/data-final-fixes.lua +++ b/lignumis/data-final-fixes.lua @@ -1,2 +1,7 @@ require("prototypes/content/final") -require("prototypes/compatibility/final") \ No newline at end of file +require("prototypes/compatibility/final") + +if not mods["Burner-Leech-Fork"] and not mods["Burner-Leech"] and not mods["InserterFuelLeech"] then + data.raw["inserter"]["burner-inserter"].allow_burner_leech = true + data.raw["inserter"]["burner-long-handed-inserter"].allow_burner_leech = true +end \ No newline at end of file From 3683a492c043365d47b53b1f5f95780b5f4f8f0c Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 4 Jun 2025 16:24:22 +0200 Subject: [PATCH 118/150] Burner-Leech-Fork is not incompatible anymore --- lignumis/info.json | 1 - 1 file changed, 1 deletion(-) diff --git a/lignumis/info.json b/lignumis/info.json index dd05c72..06ff35a 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -39,7 +39,6 @@ "?wood-industry", "?wood-military >= 2.3.3", "!apm_power_ldinc", - "!Burner-Leech-Fork", "!early-agriculture", "!planet-picker", "!wood-logistics", From 4e415782f22922e1ba46d5e2b5681ecaa77f82e0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 4 Jun 2025 16:30:52 +0200 Subject: [PATCH 119/150] Revert "Improve transition to Nauvis" This reverts commit 07df28273d7f20f642418b2dd2ec4159999cd356. --- README.md | 1 + lignumis/scripts/to-nauvis.lua | 70 +++++++------------------ lignumis/scripts/wooden-rocket-silo.lua | 2 - 3 files changed, 19 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 4669975..c6cb374 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,7 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" - 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 +- Improve transition to Nauvis a bit more - 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/scripts/to-nauvis.lua b/lignumis/scripts/to-nauvis.lua index 3985a75..7dfbd82 100644 --- a/lignumis/scripts/to-nauvis.lua +++ b/lignumis/scripts/to-nauvis.lua @@ -29,7 +29,7 @@ end local function teleport_player(player) local nauvis = game.planets[storage.target_planet].surface if player.surface.name == "lignumis" then - local position = nauvis.find_non_colliding_position("character", { 2, 2 }, 100, 1) or { 0, 0 } + local position = nauvis.find_non_colliding_position("character", { 0, 0 }, 100, 1) or { 0, 0 } player.teleport(position, storage.target_planet) chart_starting_area(nauvis, player) end @@ -57,69 +57,35 @@ local function init_freeplay() end -local function transit_player(player_index) - local player = game.get_player(player_index) - local transition = storage.transitions[player_index] +ToNauvis.events[defines.events.on_rocket_launched] = function(event) + if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end - transition.rocket_entry.cargo_pod.set_passenger(nil) - transition.rocket_entry.cargo_pod.destroy() + local rocket_entry + local rocket_entry_index + local player + + for i, entry in pairs(storage.rocket_silos) do + if entry.real_silo == event.rocket_silo then + rocket_entry = entry + rocket_entry_index = i + player = entry.player and game.get_player(entry.player) or game.players[1] + break + end + end init_nauvis() teleport_player(player) init_freeplay() -- Give the player the content of the rocket - if transition.rocket_entry.rocket_content then + if rocket_entry.rocket_content then local inventory = player.get_main_inventory() - for _, item in pairs(transition.rocket_entry.rocket_content) do + for _, item in pairs(rocket_entry.rocket_content) do inventory.insert(item) end inventory.sort_and_merge() end - table.remove(storage.rocket_silos, transition.rocket_entry_index) -end - - -local function explode_silo(silo) - silo.die() -end - -ToNauvis.events[defines.events.on_rocket_launch_ordered] = function(event) - if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end - - local player - - for i, entry in pairs(storage.rocket_silos) do - if entry.real_silo == event.rocket_silo then - if not storage.transitions then - storage.transitions = {} - end - player = entry.player and game.get_player(entry.player) or game.players[1] - storage.transitions[player.index] = { - rocket_entry = entry, - rocket_entry_index = i - } - break - end - end - - local transit_tick = game.tick + (26 * 59) - local explode_tick = game.tick + (31 * 59) - - script.on_nth_tick(explode_tick, function() - explode_silo(event.rocket_silo) - script.on_nth_tick(explode_tick, nil) - end) - - script.on_nth_tick(transit_tick, function() - transit_player(player.index) - script.on_nth_tick(transit_tick, nil) - end) -end - -ToNauvis.events[defines.events.on_post_entity_died] = function(event) - if not event.ghost or event.prototype.name ~= "provisional-rocket-silo" then return end - event.ghost.destroy() + table.remove(storage.rocket_silos, rocket_entry_index) end return ToNauvis diff --git a/lignumis/scripts/wooden-rocket-silo.lua b/lignumis/scripts/wooden-rocket-silo.lua index 7d3795b..c0890cf 100644 --- a/lignumis/scripts/wooden-rocket-silo.lua +++ b/lignumis/scripts/wooden-rocket-silo.lua @@ -92,10 +92,8 @@ local function launch(event) if entry.fake_silo == fake_silo then entry.player = event.player_index entry.rocket_content = rocket_content - entry.cargo_pod = entry.real_silo.rocket.attached_cargo_pod fake_silo.destroy() entry.real_silo.launch_rocket() - entry.cargo_pod.set_passenger(player) break end end From 9c18aba1da9b46e0b69a6ad725ca0ac3362f9d95 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 4 Jun 2025 16:32:26 +0200 Subject: [PATCH 120/150] 1.0.49 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index ab9941a..24f39d0 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.49 +Date: 03.06.2025 + Changes: + - Enable burner leech when no dedicated mod is installed + - Burner-Leech-Fork is not incompatible anymore + Bug Fixes: + - Revert "Improve transition to Nauvis" since it requires currently unstable Factorio version 2.0.53 +--------------------------------------------------------------------------------------------------- Version: 1.0.48 Date: 03.06.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 06ff35a..4b59ad7 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.48", + "version": "1.0.49", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 23f5286d22a8058732106a0b59d191c88124928b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 4 Jun 2025 16:34:02 +0200 Subject: [PATCH 121/150] Reapply "Improve transition to Nauvis" This reverts commit 4e415782f22922e1ba46d5e2b5681ecaa77f82e0. --- README.md | 1 - lignumis/scripts/to-nauvis.lua | 70 ++++++++++++++++++------- lignumis/scripts/wooden-rocket-silo.lua | 2 + 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c6cb374..4669975 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,6 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" - 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 -- Improve transition to Nauvis a bit more - 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/scripts/to-nauvis.lua b/lignumis/scripts/to-nauvis.lua index 7dfbd82..3985a75 100644 --- a/lignumis/scripts/to-nauvis.lua +++ b/lignumis/scripts/to-nauvis.lua @@ -29,7 +29,7 @@ end local function teleport_player(player) local nauvis = game.planets[storage.target_planet].surface if player.surface.name == "lignumis" then - local position = nauvis.find_non_colliding_position("character", { 0, 0 }, 100, 1) or { 0, 0 } + local position = nauvis.find_non_colliding_position("character", { 2, 2 }, 100, 1) or { 0, 0 } player.teleport(position, storage.target_planet) chart_starting_area(nauvis, player) end @@ -57,35 +57,69 @@ local function init_freeplay() end -ToNauvis.events[defines.events.on_rocket_launched] = function(event) - if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end +local function transit_player(player_index) + local player = game.get_player(player_index) + local transition = storage.transitions[player_index] - local rocket_entry - local rocket_entry_index - local player - - for i, entry in pairs(storage.rocket_silos) do - if entry.real_silo == event.rocket_silo then - rocket_entry = entry - rocket_entry_index = i - player = entry.player and game.get_player(entry.player) or game.players[1] - break - end - end + transition.rocket_entry.cargo_pod.set_passenger(nil) + transition.rocket_entry.cargo_pod.destroy() init_nauvis() teleport_player(player) init_freeplay() -- Give the player the content of the rocket - if rocket_entry.rocket_content then + if transition.rocket_entry.rocket_content then local inventory = player.get_main_inventory() - for _, item in pairs(rocket_entry.rocket_content) do + for _, item in pairs(transition.rocket_entry.rocket_content) do inventory.insert(item) end inventory.sort_and_merge() end - table.remove(storage.rocket_silos, rocket_entry_index) + table.remove(storage.rocket_silos, transition.rocket_entry_index) +end + + +local function explode_silo(silo) + silo.die() +end + +ToNauvis.events[defines.events.on_rocket_launch_ordered] = function(event) + if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end + + local player + + for i, entry in pairs(storage.rocket_silos) do + if entry.real_silo == event.rocket_silo then + if not storage.transitions then + storage.transitions = {} + end + player = entry.player and game.get_player(entry.player) or game.players[1] + storage.transitions[player.index] = { + rocket_entry = entry, + rocket_entry_index = i + } + break + end + end + + local transit_tick = game.tick + (26 * 59) + local explode_tick = game.tick + (31 * 59) + + script.on_nth_tick(explode_tick, function() + explode_silo(event.rocket_silo) + script.on_nth_tick(explode_tick, nil) + end) + + script.on_nth_tick(transit_tick, function() + transit_player(player.index) + script.on_nth_tick(transit_tick, nil) + end) +end + +ToNauvis.events[defines.events.on_post_entity_died] = function(event) + if not event.ghost or event.prototype.name ~= "provisional-rocket-silo" then return end + event.ghost.destroy() end return ToNauvis diff --git a/lignumis/scripts/wooden-rocket-silo.lua b/lignumis/scripts/wooden-rocket-silo.lua index c0890cf..7d3795b 100644 --- a/lignumis/scripts/wooden-rocket-silo.lua +++ b/lignumis/scripts/wooden-rocket-silo.lua @@ -92,8 +92,10 @@ local function launch(event) if entry.fake_silo == fake_silo then entry.player = event.player_index entry.rocket_content = rocket_content + entry.cargo_pod = entry.real_silo.rocket.attached_cargo_pod fake_silo.destroy() entry.real_silo.launch_rocket() + entry.cargo_pod.set_passenger(player) break end end From 2ccc07fd749c8bb5f478f1a5b320f69f488970f6 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 4 Jun 2025 16:35:57 +0200 Subject: [PATCH 122/150] 1.0.50 --- lignumis/changelog.txt | 7 ++++++- lignumis/info.json | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 24f39d0..cb166f5 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,6 +1,11 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.50 +Date: 04.06.2025 + Changes: + - Reapply "Improve transition to Nauvis" +--------------------------------------------------------------------------------------------------- Version: 1.0.49 -Date: 03.06.2025 +Date: 04.06.2025 Changes: - Enable burner leech when no dedicated mod is installed - Burner-Leech-Fork is not incompatible anymore diff --git a/lignumis/info.json b/lignumis/info.json index 4b59ad7..5078248 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.49", + "version": "1.0.50", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", @@ -9,7 +9,7 @@ "space_travel_required": true, "dependencies": [ "base", - "space-age >= 2.0.33", + "space-age >= 2.0.53", "astroponics >= 1.2.0", "bioprocessing-tab", "cf-lib >= 0.0.13", From 05b7278b801f9ae30d4efd424aafdca26b7cb58c Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 4 Jun 2025 22:40:53 +0200 Subject: [PATCH 123/150] Readme --- README.md | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4669975..3ed97ac 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,17 @@ +[![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) +_________________ +![Lignumis poster](https://git.cacklingfiend.info/cacklingfiend/lignumis-assets/raw/commit/27e61170a897dc4a6afc7d518629899a3b05b6f0/sources/poster.jpg) + +## Lignumis + This mod extends the early game of Space Age by putting you on the moon "Lignumis" before you escape to Nauvis. It concentrates on wood and steam technologies, giving you some early game production chains for those resources. -The duration of the stay on Lignumis will be rather short. The impact of the later game will still be substantial (once implemented). +The duration of the stay on Lignumis will be rather short. The impact of the later game will still be substantial. **Warning when adding to existing games:** With the default settings, this mod will break a few things in your existing bases and space ships. Check out the settings to disable what you don't like. +_________________ + ## Mod recommendations The following mods can be a great addition for this mod: @@ -40,7 +48,7 @@ If you like go more into the charcoal direction. It has no overlap with Lignumis For wood on Aquilo. -#### [Crushing Industry](https://mods.factorio.com/mod/crushing-industry) +#### [Crushing Industry](https://mods.factorio.com/mod/crushing-industry) with [Crushing Industry - Productivity Research](https://mods.factorio.com/mod/crushing-industry-productivity-research) Recommended with high science cost settings. It adds crushers and crushed ores to increase productivity. Lignumis adds crushed gold ore and a technology to unlock the crusher with wood and steam science packs. @@ -57,6 +65,8 @@ Add this for increased complexity in the early Nauvis game. It has no effect on For even more complexity after Lignumis. They currently don't change anything on Lignumis itself. +_________________ + ## Compatibility with other planet mods The following planet mods are tested for (at least technical) compatibility: @@ -73,12 +83,18 @@ The following planet mods are tested for (at least technical) compatibility: - [Terra Palus](https://mods.factorio.com/mod/terrapalus) - [Secretas & Frozeta](https://mods.factorio.com/mod/secretas) +This list is probably not up-to-date. In doubt, just try it out. + +_________________ + ## 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. +_________________ + ## Add compatibility to your mod Lignumis, by default, adds wood and steam science packs during `data-updates.lua` to all technologies that match certain criteria. @@ -129,6 +145,8 @@ data.raw["string-setting"]["lignumis-second-planet"].allowed_values = { "gleba" data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" ``` +_________________ + ## Todo - Fix pipe graphics on desiccation furnace and quality assembler @@ -138,7 +156,8 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba" - 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) - Compatibility with [Noble Metals](https://mods.factorio.com/mod/bzgold) once it's updated -- "Hardcore Lignumis" + +_________________ ## Credits From b889d0db264815670c14e71fe08c3112731a555c Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 4 Jun 2025 22:47:27 +0200 Subject: [PATCH 124/150] Adjust essential flags on technologies --- lignumis/prototypes/content/technology.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/lignumis/prototypes/content/technology.lua b/lignumis/prototypes/content/technology.lua index fa19344..d0f7dee 100644 --- a/lignumis/prototypes/content/technology.lua +++ b/lignumis/prototypes/content/technology.lua @@ -3,7 +3,6 @@ data:extend({ type = "technology", name = "planet-discovery-lignumis", icons = PlanetsLib.technology_icons_moon(Lignumis.graphics .. "technology/lignumis.png", 256), - essential = true, effects = { { type = "unlock-space-location", @@ -117,7 +116,6 @@ data:extend({ name = "iron-processing", icon = "__base__/graphics/icons/iron-plate.png", icon_size = 64, - essential = true, effects = { { type = "unlock-recipe", @@ -143,7 +141,6 @@ data:extend({ name = "copper-processing", icon = "__base__/graphics/icons/copper-plate.png", icon_size = 64, - essential = true, effects = { { type = "unlock-recipe", From 8c88e8ac8a58a556d2a26e62b203f9c2198706ff Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Thu, 5 Jun 2025 16:52:02 +0200 Subject: [PATCH 125/150] Crushing industry + Hot metals: Fix crushed gold not being smelted into hot gold --- .../compatibility/crushing-industry-updates.lua | 10 ++++++++++ .../prototypes/compatibility/crushing-industry.lua | 8 -------- lignumis/prototypes/compatibility/data.lua | 3 ++- lignumis/prototypes/compatibility/updates.lua | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 lignumis/prototypes/compatibility/crushing-industry-updates.lua diff --git a/lignumis/prototypes/compatibility/crushing-industry-updates.lua b/lignumis/prototypes/compatibility/crushing-industry-updates.lua new file mode 100644 index 0000000..940ba53 --- /dev/null +++ b/lignumis/prototypes/compatibility/crushing-industry-updates.lua @@ -0,0 +1,10 @@ +local Technology = require("__cf-lib__/data/Technology") + +if not mods["crushing-industry"] then return end +if not settings.startup["crushing-industry-ore"].value then return end + +if mods["aai-industry"] then + Technology:new("burner-mechanics"):removeRecipe("burner-crusher") +else + Technology:new("steam-power"):removeRecipe("burner-crusher") +end \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/crushing-industry.lua b/lignumis/prototypes/compatibility/crushing-industry.lua index 2f62662..7b00d89 100644 --- a/lignumis/prototypes/compatibility/crushing-industry.lua +++ b/lignumis/prototypes/compatibility/crushing-industry.lua @@ -84,14 +84,6 @@ if settings.startup["crushing-industry-byproducts"].value then table.insert(data.raw["recipe"]["crushed-gold-ore"].results, { type = "item", name = "sand", amount = 1, probability = 0.02 }) end -if mods["aai-industry"] then - Technology:new("burner-mechanics"):removeRecipe("burner-crusher") -else - Technology:new("steam-power"):removeRecipe("burner-crusher") -end - - - local gold_recipe = Recipe:new("burner-crusher") :replaceIngredient("iron-gear-wheel", "wooden-gear-wheel") :replaceIngredient("iron-plate", "gold-plate") diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index 8f4bb5b..6d649e2 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -5,4 +5,5 @@ require("alien-biomes") require("aai-loaders") require("nuclear-science") require("lane-splitters") -require("wood-industry") \ No newline at end of file +require("wood-industry") +require("crushing-industry") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/updates.lua b/lignumis/prototypes/compatibility/updates.lua index 8df0677..3bd7bd3 100644 --- a/lignumis/prototypes/compatibility/updates.lua +++ b/lignumis/prototypes/compatibility/updates.lua @@ -1,4 +1,4 @@ require("aai-industry") require("gleba-reborn") require("any-planet-start") -require("crushing-industry") \ No newline at end of file +require("crushing-industry-updates") \ No newline at end of file From 0ea9d1a17030f43724cf772005d37167a1f643c0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 6 Jun 2025 13:41:58 +0200 Subject: [PATCH 126/150] 1.0.51 --- lignumis/changelog.txt | 7 +++++++ lignumis/info.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index cb166f5..ba9b8cc 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,11 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.51 +Date: 06.06.2025 + Changes: + - Adjust essential flags on technologies + Bug Fixes: + - Crushing industry + Hot metals: Fix crushed gold not being smelted into hot gold +--------------------------------------------------------------------------------------------------- Version: 1.0.50 Date: 04.06.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 5078248..f5aa14d 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.50", + "version": "1.0.51", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From d09b66deb50c6b732af86710646af776bd6d0470 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 6 Jun 2025 14:25:17 +0200 Subject: [PATCH 127/150] Increase speed of rocket a bit --- lignumis/prototypes/content/wooden-rocket-silo.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lignumis/prototypes/content/wooden-rocket-silo.lua b/lignumis/prototypes/content/wooden-rocket-silo.lua index ab55f70..920ab42 100644 --- a/lignumis/prototypes/content/wooden-rocket-silo.lua +++ b/lignumis/prototypes/content/wooden-rocket-silo.lua @@ -79,9 +79,9 @@ local rocket = table.deepcopy(data.raw["rocket-silo-rocket"]["rocket-silo-rocket rocket.name = "provisional-rocket" rocket.inventory_size = 40 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.engine_starting_speed = 1 / (8 * 60) +rocket.flying_speed = 1 / (3000 * 60) +rocket.flying_acceleration = 0.007 rocket.rocket_sprite.layers[1].filename = Lignumis.graphics .. "entity/wooden-rocket-silo/rocket-static-pod.png" local rocket_part_recipe = { From e0df3f13358401a6521143409f2e02da8558a136 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 6 Jun 2025 14:25:44 +0200 Subject: [PATCH 128/150] Add flames and explosions to transition --- lignumis/scripts/to-nauvis.lua | 72 +++++++++++++++++++++++++++++++--- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/lignumis/scripts/to-nauvis.lua b/lignumis/scripts/to-nauvis.lua index 3985a75..27cffdd 100644 --- a/lignumis/scripts/to-nauvis.lua +++ b/lignumis/scripts/to-nauvis.lua @@ -84,6 +84,56 @@ local function explode_silo(silo) silo.die() end + +local get_random_position = function(box, x_scale, y_scale) + x_scale = x_scale or 1 + y_scale = y_scale or 1 + local x1 = box.left_top.x + local y1 = box.left_top.y + local x2 = box.right_bottom.x + local y2 = box.right_bottom.y + local x = ((x2 - x1) * x_scale * (math.random() - 0.5)) + ((x1 + x2) / 2) + local y = ((y2 - y1) * y_scale * (math.random() - 0.5)) + ((y1 + y2) / 2) + return { x, y } +end + + +local function burn_silo(silo) + local surface = silo.surface + local box = silo.bounding_box + for k = 1, 6 do + local position = get_random_position(box, 0.8, 0.5) + surface.create_entity + { + name = "crash-site-fire-flame", + position = position + } + local fire = surface.create_entity + { + name = "crash-site-fire-smoke", + position = position + } + fire.time_to_live = math.random(59 * 9, 59 * 14 - 1) + fire.time_to_next_effect = math.random(59 * 2) + end +end + + +local function pre_explode_silo(silo) + local surface = silo.surface + local box = silo.bounding_box + for k = 1, 3 do + local explosions = surface.create_entity + { + name = "crash-site-explosion-smoke", + position = get_random_position(box, 0.8, 0.5) + } + explosions.time_to_live = math.random(59 * 6, 59 * 11 - 1) + explosions.time_to_next_effect = math.random(59 * 3) + end +end + + ToNauvis.events[defines.events.on_rocket_launch_ordered] = function(event) if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end @@ -103,18 +153,30 @@ ToNauvis.events[defines.events.on_rocket_launch_ordered] = function(event) end end - local transit_tick = game.tick + (26 * 59) - local explode_tick = game.tick + (31 * 59) + local burn_tick = game.tick + (14 * 59) + local pre_explode_tick = game.tick + (17 * 59) + local transit_tick = game.tick + (23 * 59) + local explode_tick = game.tick + (28 * 59) - script.on_nth_tick(explode_tick, function() - explode_silo(event.rocket_silo) - script.on_nth_tick(explode_tick, nil) + script.on_nth_tick(burn_tick, function() + burn_silo(event.rocket_silo) + script.on_nth_tick(burn_tick, nil) + end) + + script.on_nth_tick(pre_explode_tick, function() + pre_explode_silo(event.rocket_silo) + script.on_nth_tick(pre_explode_tick, nil) end) script.on_nth_tick(transit_tick, function() transit_player(player.index) script.on_nth_tick(transit_tick, nil) end) + + script.on_nth_tick(explode_tick, function() + explode_silo(event.rocket_silo) + script.on_nth_tick(explode_tick, nil) + end) end ToNauvis.events[defines.events.on_post_entity_died] = function(event) From 6eb83387796287b0e657c9ab424de39ec57bcde0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 6 Jun 2025 14:26:30 +0200 Subject: [PATCH 129/150] 1.0.52 --- lignumis/changelog.txt | 6 ++++++ lignumis/info.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index ba9b8cc..e22f040 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,10 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.52 +Date: 06.06.2025 + Changes: + - Increase speed of rocket a bit + - Add flames and explosions to transition +--------------------------------------------------------------------------------------------------- Version: 1.0.51 Date: 06.06.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index f5aa14d..6cf9bc0 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.51", + "version": "1.0.52", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 1dc928acddcc9426d8c0a69624d477adfb3f0322 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 8 Jun 2025 00:03:36 +0200 Subject: [PATCH 130/150] Readme --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 3ed97ac..972727b 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,11 @@ The duration of the stay on Lignumis will be rather short. The impact of the lat **Warning when adding to existing games:** With the default settings, this mod will break a few things in your existing bases and space ships. Check out the settings to disable what you don't like. +#### Streamers featuring Lignumis + +[![S1-E01 - Lumber Support - Laurence Plays Factorio: Planetary Pioneers](https://i.ytimg.com/vi/1eH4oJtlBpE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6UdmD7HuhCdhQBCCSL38Ke_FpXg)](https://www.youtube.com/watch?v=1eH4oJtlBpE) +[![Factorio Multiplayer: Planetary Pioneers - Space Age - E01 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/OMDpDhZdTmU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCVQhrlcmwsZbzRDNQo8vgMKtUHaA)](https://www.youtube.com/live/OMDpDhZdTmU?feature=shared&t=290&list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=1) [![Factorio Multiplayer: Planetary Pioneers - Space Age - E01.5 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/d4n1H6Z4KPc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5TNZBTs7GpUFdVB1CG1-hzYw0tw)](https://www.youtube.com/live/d4n1H6Z4KPc?list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=3) + _________________ ## Mod recommendations From c20f490d81b57bc0db77b9284f71462ec73e9b97 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 8 Jun 2025 17:06:18 +0200 Subject: [PATCH 131/150] Gold plates require 1 gold ore again --- lignumis/prototypes/compatibility/crushing-industry.lua | 2 +- lignumis/prototypes/content/gold/intermediates.lua | 2 +- lignumis/prototypes/content/gold/stromatolite.lua | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lignumis/prototypes/compatibility/crushing-industry.lua b/lignumis/prototypes/compatibility/crushing-industry.lua index 7b00d89..4c9a5ac 100644 --- a/lignumis/prototypes/compatibility/crushing-industry.lua +++ b/lignumis/prototypes/compatibility/crushing-industry.lua @@ -53,7 +53,7 @@ data:extend({ auto_recycle = false, hide_from_player_crafting = settings.startup["crushing-industry-hide-player-crafting"].value, energy_required = 3.2, - ingredients = { { type = "item", name = "crushed-gold-ore", amount = 2 } }, + ingredients = { { type = "item", name = "crushed-gold-ore", amount = 1 } }, results = { { type = "item", name = "gold-plate", amount = 1 } }, main_product = "gold-plate", }, diff --git a/lignumis/prototypes/content/gold/intermediates.lua b/lignumis/prototypes/content/gold/intermediates.lua index 4848e32..3f4f010 100644 --- a/lignumis/prototypes/content/gold/intermediates.lua +++ b/lignumis/prototypes/content/gold/intermediates.lua @@ -20,7 +20,7 @@ data:extend({ name = "gold-plate", category = "smelting", energy_required = 3.2, - ingredients = { { type = "item", name = "gold-ore", amount = 2 } }, + ingredients = { { type = "item", name = "gold-ore", amount = 1 } }, results = { { type = "item", name = "gold-plate", amount = 1 } }, allow_productivity = true }, diff --git a/lignumis/prototypes/content/gold/stromatolite.lua b/lignumis/prototypes/content/gold/stromatolite.lua index 315757f..d69218c 100644 --- a/lignumis/prototypes/content/gold/stromatolite.lua +++ b/lignumis/prototypes/content/gold/stromatolite.lua @@ -147,7 +147,7 @@ plant.minable = { mining_time = 2, results = { { type = "item", name = "moist-stromatolite-remnant", amount = 25 }, - { type = "item", name = "gold-bacteria", amount = 30 }, + { type = "item", name = "gold-bacteria", amount = 20 }, { type = "item", name = "gold-stromatolite-seed", amount_min = 1, amount_max = 3 } } } From 4553e887a3f60b49ab7ae6edd43e59e2f9502444 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 8 Jun 2025 17:06:54 +0200 Subject: [PATCH 132/150] Any Planet Start: Works with moons now --- .../prototypes/compatibility/any-planet-start-final.lua | 3 ++- lignumis/prototypes/compatibility/any-planet-start.lua | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lignumis/prototypes/compatibility/any-planet-start-final.lua b/lignumis/prototypes/compatibility/any-planet-start-final.lua index 668cc66..072dfbe 100644 --- a/lignumis/prototypes/compatibility/any-planet-start-final.lua +++ b/lignumis/prototypes/compatibility/any-planet-start-final.lua @@ -7,7 +7,8 @@ local target_planet = settings.startup["aps-planet"].value if target_planet == "none" or target_planet == "nauvis" then return end -- Switch planet discovery technology to the new planet -Technology:new("planet-discovery-" .. target_planet) +local planet_discovery = data.raw.technology["planet-discovery-" .. target_planet] or data.raw.technology["moon-discovery-" .. target_planet] +Technology:new(planet_discovery) :assign({ enabled = true, hidden = false diff --git a/lignumis/prototypes/compatibility/any-planet-start.lua b/lignumis/prototypes/compatibility/any-planet-start.lua index 6bb4f27..ee57775 100644 --- a/lignumis/prototypes/compatibility/any-planet-start.lua +++ b/lignumis/prototypes/compatibility/any-planet-start.lua @@ -10,7 +10,8 @@ Technology:new("tree-seeding"):setPrerequisites({ "wood-science-pack" }) -- Switch planet discovery technology to the new planet -Technology:new("planet-discovery-" .. target_planet) +local planet_discovery = data.raw.technology["planet-discovery-" .. target_planet] or data.raw.technology["moon-discovery-" .. target_planet] +Technology:new(planet_discovery) :assign({ enabled = true, hidden = false, @@ -24,8 +25,8 @@ Technology:new("planet-discovery-" .. target_planet) } }) :setPrerequisites({ "provisional-rocketry" }) -Technology:new("iron-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet) -Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet) +Technology:new("iron-processing"):replacePrerequisite("planet-discovery-nauvis", planet_discovery.name) +Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", planet_discovery.name) -- Vulcanus From 0b72861273ef39f96cb0ade35558b8a41bcda4a5 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 8 Jun 2025 17:19:31 +0200 Subject: [PATCH 133/150] Reduce usage of resources for some buildings --- lignumis/prototypes/content/basic-gun-turret.lua | 4 ++-- .../content/burner-agricultural-tower.lua | 8 ++++---- lignumis/prototypes/content/lumber-mill.lua | 14 +++++++------- lignumis/prototypes/content/wood-lab.lua | 4 ++-- lignumis/prototypes/content/wooden-rocket-silo.lua | 8 ++++---- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lignumis/prototypes/content/basic-gun-turret.lua b/lignumis/prototypes/content/basic-gun-turret.lua index 75428e1..335010b 100644 --- a/lignumis/prototypes/content/basic-gun-turret.lua +++ b/lignumis/prototypes/content/basic-gun-turret.lua @@ -51,9 +51,9 @@ local turret_recipe = { enabled = false, energy_required = 8, ingredients = { - { type = "item", name = "wooden-gear-wheel", amount = 10 }, + { type = "item", name = "wooden-gear-wheel", amount = 5 }, { type = "item", name = "lumber", amount = 10 }, - { type = "item", name = "gold-plate", amount = 20 } + { type = "item", name = "gold-plate", amount = 10 } }, results = { { type = "item", name = "basic-gun-turret", amount = 1 } } } diff --git a/lignumis/prototypes/content/burner-agricultural-tower.lua b/lignumis/prototypes/content/burner-agricultural-tower.lua index 127c2fe..32a2234 100644 --- a/lignumis/prototypes/content/burner-agricultural-tower.lua +++ b/lignumis/prototypes/content/burner-agricultural-tower.lua @@ -87,8 +87,8 @@ data:extend({ energy_required = 10, ingredients = { { type = "item", name = "stone-brick", amount = 5 }, - { type = "item", name = "wooden-gear-wheel", amount = 20 }, - { type = "item", name = "lumber", amount = 20 }, + { type = "item", name = "wooden-gear-wheel", amount = 15 }, + { type = "item", name = "lumber", amount = 15 }, { type = "item", name = "gold-plate", amount = basic_circuit_board and 10 or 20 }, basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 10 } or nil }, @@ -124,8 +124,8 @@ data:extend({ energy_required = 10, ingredients = { { type = "item", name = "stone-brick", amount = 5 }, - { type = "item", name = "wooden-gear-wheel", amount = 20 }, - { type = "item", name = "lumber", amount = 20 }, + { type = "item", name = "wooden-gear-wheel", amount = 15 }, + { type = "item", name = "lumber", amount = 15 }, { type = "item", name = "copper-plate", amount = 10 }, { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 } }, diff --git a/lignumis/prototypes/content/lumber-mill.lua b/lignumis/prototypes/content/lumber-mill.lua index 78da9a0..2f55798 100644 --- a/lignumis/prototypes/content/lumber-mill.lua +++ b/lignumis/prototypes/content/lumber-mill.lua @@ -31,11 +31,11 @@ local lumber_mill_item = LumberMill.ItemBuilder:new() LumberMill.RecipeBuilder:new() :ingredients(table.trim({ { type = "item", name = "stone-brick", amount = 40 }, - { type = "item", name = "lumber", amount = 100 }, - { type = "item", name = "wooden-gear-wheel", amount = 100 }, - { type = "item", name = "gold-plate", amount = basic_circuit_board and 30 or 60 }, - basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 30 } or nil, - { type = "item", name = "burner-assembling-machine", amount = 5 } + { 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 } })) :apply({ category = "wood-processing-or-assembling" @@ -53,8 +53,8 @@ LumberMill.RecipeBuilder:new() { type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "lumber", amount = 50 }, { type = "item", name = "wooden-gear-wheel", amount = 50 }, - { type = "item", name = "copper-plate", amount = basic_circuit_board and 30 or 60 }, - { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 30 }, + { 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 = "assembling-machine-1", amount = 2 } }) :apply({ diff --git a/lignumis/prototypes/content/wood-lab.lua b/lignumis/prototypes/content/wood-lab.lua index 6f06645..7db5aec 100644 --- a/lignumis/prototypes/content/wood-lab.lua +++ b/lignumis/prototypes/content/wood-lab.lua @@ -147,8 +147,8 @@ data:extend({ category = "wood-processing-or-assembling", energy_required = 2, ingredients = { - { type = "item", name = "lumber", amount = 10 }, - { type = "item", name = "wooden-gear-wheel", amount = 10 }, + { type = "item", name = "lumber", amount = 6 }, + { type = "item", name = "wooden-gear-wheel", amount = 4 }, { type = "item", name = "stone-brick", amount = 10 }, { type = "item", name = "gold-plate", amount = basic_circuit_board and 10 or 20 }, basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 10 } or nil diff --git a/lignumis/prototypes/content/wooden-rocket-silo.lua b/lignumis/prototypes/content/wooden-rocket-silo.lua index 920ab42..4bfb828 100644 --- a/lignumis/prototypes/content/wooden-rocket-silo.lua +++ b/lignumis/prototypes/content/wooden-rocket-silo.lua @@ -67,10 +67,10 @@ local silo_recipe = table.deepcopy(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 = "lumber", amount = 400 }, + { type = "item", name = "wooden-gear-wheel", amount = 150 }, + { type = "item", name = "stone-brick", amount = 400 }, + { type = "item", name = "gold-plate", amount = 400 }, basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 100 } or { type = "item", name = "gold-cable", amount = 100 } } From 7abcc07a0b29280f0d2e66f20393ae5d30f3e25b Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 8 Jun 2025 18:15:32 +0200 Subject: [PATCH 134/150] 1.0.53 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index e22f040..80440cf 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.53 +Date: 08.06.2025 + Changes: + - Gold plates require 1 gold ore again and buff gold by 33% + - Reduce usage of resources for some buildings + Bug Fixes: + - Any Planet Start: Works with moons now (required for Cerys) +--------------------------------------------------------------------------------------------------- Version: 1.0.52 Date: 06.06.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 6cf9bc0..4a359f8 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.52", + "version": "1.0.53", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 93329a853e799edb8b5618ce22d324095f3fc47c Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 10 Jun 2025 09:39:09 +0200 Subject: [PATCH 135/150] Readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 972727b..79d9318 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,8 @@ The duration of the stay on Lignumis will be rather short. The impact of the lat #### Streamers featuring Lignumis -[![S1-E01 - Lumber Support - Laurence Plays Factorio: Planetary Pioneers](https://i.ytimg.com/vi/1eH4oJtlBpE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6UdmD7HuhCdhQBCCSL38Ke_FpXg)](https://www.youtube.com/watch?v=1eH4oJtlBpE) -[![Factorio Multiplayer: Planetary Pioneers - Space Age - E01 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/OMDpDhZdTmU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCVQhrlcmwsZbzRDNQo8vgMKtUHaA)](https://www.youtube.com/live/OMDpDhZdTmU?feature=shared&t=290&list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=1) [![Factorio Multiplayer: Planetary Pioneers - Space Age - E01.5 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/d4n1H6Z4KPc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5TNZBTs7GpUFdVB1CG1-hzYw0tw)](https://www.youtube.com/live/d4n1H6Z4KPc?list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=3) - +[![S1-E01 - Lumber Support - Laurence Plays Factorio: Planetary Pioneers](https://i.ytimg.com/vi/1eH4oJtlBpE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6UdmD7HuhCdhQBCCSL38Ke_FpXg)](https://www.youtube.com/watch?v=1eH4oJtlBpE) [![S1-E01 - Lumber Support - Laurence Plays Factorio: Planetary Pioneers](https://i.ytimg.com/vi/TNR1-Z5XFxI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAvatJCSqylrWAZQyTkcBW_lB82rA)](https://www.youtube.com/watch?v=TNR1-Z5XFxI) +[![Factorio Multiplayer: Planetary Pioneers - Space Age - E01 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/OMDpDhZdTmU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCVQhrlcmwsZbzRDNQo8vgMKtUHaA)](https://www.youtube.com/live/OMDpDhZdTmU?feature=shared&t=290&list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=2) [![Factorio Multiplayer: Planetary Pioneers - Space Age - E01.5 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/d4n1H6Z4KPc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5TNZBTs7GpUFdVB1CG1-hzYw0tw)](https://www.youtube.com/live/d4n1H6Z4KPc?list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=3) [![Factorio Multiplayer: Planetary Pioneers - Space Age - E02 - 09/06/25 - Laurence Streams](https://i.ytimg.com/vi/guWhjqPrVN0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAP1kKquScBtrf5w41Eaarp-y5UPA)](https://www.youtube.com/live/guWhjqPrVN0?list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=4&t=362) _________________ ## Mod recommendations @@ -32,6 +31,7 @@ Alternatives: [Burner Leech Fork](https://mods.factorio.com/mod/Burner-Leech-For #### [Any Planet Start](https://mods.factorio.com/mod/any-planet-start) Allows you to choose the planet that Lignumis orbits. You can continue on Vulcanus, Fulgora or Gleba after leaving Lignumis. +Some modded planets add APS support as well (sometimes with a separate mod). #### [Diversitree](https://mods.factorio.com/mod/Diversitree) From 31872fef537a6cc471744792a26bc152a8704b98 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 21 Jun 2025 10:10:17 +0200 Subject: [PATCH 136/150] Forbid lumber mill in space --- lignumis/prototypes/content/lumber-mill.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lignumis/prototypes/content/lumber-mill.lua b/lignumis/prototypes/content/lumber-mill.lua index 2f55798..3ac959d 100644 --- a/lignumis/prototypes/content/lumber-mill.lua +++ b/lignumis/prototypes/content/lumber-mill.lua @@ -13,6 +13,8 @@ data:extend({ table.insert(data.raw["character"]["character"].crafting_categories, "wood-processing-or-assembling") +local has_oxygen = data.raw["surface-property"]["oxygen"] ~= nil + LumberMill.EntityBuilder:new() :burnerEnergySource({ emissions_per_minute = { noise = 100 } }) :baseProductivity(0.5) @@ -20,6 +22,16 @@ LumberMill.EntityBuilder:new() crafting_categories = { "wood-processing-or-assembling" }, crafting_speed = 2, energy_usage = "1000kW", + surface_conditions = { + { + property = has_oxygen and "oxygen" or "pressure", + min = 10 + }, + { + property = "gravity", + min = 1 + } + } }) local lumber_mill_item = LumberMill.ItemBuilder:new() From 9233931a2a77aed82c5cafaa38cb4398243bcb6a Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 21 Jun 2025 10:10:29 +0200 Subject: [PATCH 137/150] Add astroponics productivity research --- lignumis/locale/en/strings.cfg | 1 + .../prototypes/integrations/astroponics.lua | 38 +++++++++++++++++++ lignumis/prototypes/integrations/data.lua | 5 ++- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 lignumis/prototypes/integrations/astroponics.lua diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index 4cbe90d..a2409a1 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -138,6 +138,7 @@ active-noise-cancelling=Active noise cancelling quality-assembler=Quality assembler aai-wood-loader=Wood loader basic-ore-crushing=Basic ore crushing +astroponics-productivity=Astroponics productivity [technology-description] wood-science-pack=Allows research of basic technologies based on wood products. diff --git a/lignumis/prototypes/integrations/astroponics.lua b/lignumis/prototypes/integrations/astroponics.lua new file mode 100644 index 0000000..b531625 --- /dev/null +++ b/lignumis/prototypes/integrations/astroponics.lua @@ -0,0 +1,38 @@ +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 + } + } +}) diff --git a/lignumis/prototypes/integrations/data.lua b/lignumis/prototypes/integrations/data.lua index 038c3cb..a8b9659 100644 --- a/lignumis/prototypes/integrations/data.lua +++ b/lignumis/prototypes/integrations/data.lua @@ -1,2 +1,3 @@ -require("vanilla") -require("Wood-Walls") \ No newline at end of file +require("vanilla") +require("Wood-Walls") +require("astroponics") \ No newline at end of file From befa656b352bf6b9ed128fb16fcbcb0c7ef51885 Mon Sep 17 00:00:00 2001 From: Onseshigo Date: Sun, 1 Jun 2025 12:14:33 +0200 Subject: [PATCH 138/150] Update russian locale --- lignumis/locale/ru/strings.cfg | 166 ++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 45 deletions(-) diff --git a/lignumis/locale/ru/strings.cfg b/lignumis/locale/ru/strings.cfg index 5c279ce..77f5612 100644 --- a/lignumis/locale/ru/strings.cfg +++ b/lignumis/locale/ru/strings.cfg @@ -2,13 +2,13 @@ lignumis=○ Лигнумис [mod-description] -lignumis=Погрузитесь в мир Лигнумиса — луны Нависа, предлагающей лишь самые базовые технологии. +lignumis=Погрузитесь в мир Лигнумиса — луны Наувиса, предлагающей лишь самые базовые технологии. [space-location-name] lignumis=Лигнумис [space-location-description] -lignumis=Лигнумис — это луна, вращающаяся вокруг Нависа. Она во многом похожа на Навис, но кажется моложе и беднее ресурсами. +lignumis=Лигнумис — это луна, вращающаяся вокруг Наувиса. Она во многом похожа на Наувис, но кажется моложе и беднее ресурсами. [airborne-pollutant-name] noise=Шум @@ -19,9 +19,9 @@ noise=__1__ шума [entity-name] wood-lab=Деревянная лаборатория peat=Торф -burner-agricultural-tower=Сельскохозяйственная башня на горелке -burner-assembling-machine=Сборочная машина на горелке -burner-long-handed-inserter=Длиннорукий манипулятор на горелке +burner-agricultural-tower=Твердотопливная сельскохозяйственная башня +burner-assembling-machine=Твердотопливный сборочный автомат +burner-long-handed-inserter=Твердотопливный длинный манипулятор lumber-mill=Лесопильня gold-stromatolite=Золотой строматолит gold-stromatolite-plant=Золотой строматолит (растение) @@ -32,59 +32,61 @@ gold-pipe=Золотая труба gold-pipe-to-ground=Золотая подземная труба gold-storage-tank=Золотой резервуар desiccation-furnace=Печь для высушивания -steam-assembling-machine=Паровая сборочная машина -provisional-rocket-silo=Временное ракетное хранилище -provisional-rocket-silo-ready=Временное ракетное хранилище (готово) -basic-gun-turret=Базовая пулеметная турель -basic-construction-robot-gold=Базовый строительный робот (золото) -basic-construction-robot-copper=Базовый строительный робот (медь) -wood-transport-belt=Деревянный транспортёр -wood-underground-belt=Деревянный подземный транспортёр +steam-assembling-machine=Паровой сборочный автомат +provisional-rocket-silo=Импровизированная ракетная шахта +provisional-rocket-silo-ready=Импровизированная ракетная шахта (готово) +basic-gun-turret=Базовая пулемётная турель +basic-construction-robot-gold=Базовый строительный дрон (золот) +basic-construction-robot-copper=Базовый строительный дрон (медь) +wood-transport-belt=Деревянный конвейер +wood-underground-belt=Деревянный подземный конвейер wood-splitter=Деревянный разделитель basic-radar=Базовый радар active-noise-cancelling-tower=Башня активного шумоподавления -quality-assembler=Качественная сборочная машина -aai-wood-loader=Деревянный загрузчик +quality-assembler=Качественный сборочный автомат +aai-wood-loader=Деревянный погрузчик wood-lane-splitter=Деревянный распределитель лент -lignumis-spawner-small=Гнездовая колония Лигнумиса -lignumis-small-wriggler-pentapod=Маленький пентанож Лигнумиса -lignumis-medium-wriggler-pentapod=Средний пентанож Лигнумиса +lignumis-spawner-small=Яичная кладка Лигнумиса +lignumis-small-wriggler-pentapod=Малый пятиног-ползун Лигнумиса +lignumis-medium-wriggler-pentapod=Средний пятиног-ползун Лигнумиса [entity-description] lumber-mill=Продвинутая машина для обработки древесины. -quality-assembler=Высококачественная сборочная машина, создающая только лучшие механизмы. Добавляет один уровень качества предмету, потребляя [item=gold-quality-catalyst]. Все остальные условия остаются неизменными. +quality-assembler=Высококачественный сборочный автомат, создающий только лучшие механизмы. Добавляет 25% дополнительного качества предмету, потребляя [item=gold-quality-catalyst]. Условия поверхности и ингредиенты остаются неизменными. +gold-stromatolite-plant=Собирайте золотой строматолит для получения бактерий, обогащающих золото из почвы.\n__REMARK_COLOR_BEGIN__Ожидаемая добыча:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m [equipment-name] basic-portable-generator-equipment-gold=Базовый портативный генератор (золото) basic-portable-generator-equipment-copper=Базовый портативный генератор (медь) -basic-personal-roboport-equipment-gold=Базовый персональный робопорт (золото) -basic-personal-roboport-equipment-copper=Базовый персональный робопорт (медь) +basic-personal-roboport-equipment-gold=Базовая персональная дронстанция (золото) +basic-personal-roboport-equipment-copper=Базовая персональная дронстанция (медь) [item-name] -wooden-gear-wheel=Деревянное зубчатое колесо -wood-science-pack=Деревянный научный пакет +wooden-gear-wheel=Деревянная шестерня +wood-science-pack=Деревянный исследовательский пакет peat=Торф gold-stromatolite-seed=Семя золотого строматолита gold-ore=Золотая руда -gold-bacteria=Золотые бактерии -gold-plate=Золотая пластина +gold-bacteria=Золотобактерия +gold-plate=Золотая плита gold-cable=Золотой кабель moist-stromatolite-remnant=Влажный остаток строматолита -steam-science-pack=Паровой научный пакет -destination-nauvis=Путешествие на Навис +steam-science-pack=Паровой исследовательский пакет +destination-nauvis=Путешествие на Наувис lumber=Пиломатериалы basic-repair-pack=Базовый ремонтный комплект cupriavidus-necator=Cupriavidus necator -dead-cupriavidus-necator=Мёртвый Cupriavidus necator +dead-cupriavidus-necator=Мёртвая cupriavidus necator gold-quality-catalyst=Золотой катализатор качества wood-armor=Деревянная броня -wood-darts-magazine=Обойма деревянных дротиков +wood-darts-magazine=Магазин с деревянными дротиками basic-circuit-board=Базовая схема +crushed-gold-ore=Дроблёная золотая руда [item-description] -wooden-wall=Деревянные стены защищают базу и снижают уровень шума. +wooden-wall=Используйте деревянные стены для защиты базы и снижения уровня шума. stone-wall=Обеспечивает лучшую акустическую и физическую защиту, чем деревянный аналог. -destination-nauvis=Поместите этот предмет в ракету, чтобы отправиться на Навис. Обратите внимание, что вернуться обратно удастся не скоро.\n__REMARK_COLOR_BEGIN__BETA: Перед отлётом храните не более 40 единиц предметов в инвентаре, так как текущая система перехода на Навис временная. Не забудьте взять материалы для запуска производства железа, меди и древесины.__REMARK_COLOR_END__ +gold-stromatolite-seed=Посадите семя для выращивания золотого строматолита. Он содержит бактерии, обогащающие золото из почвы.\n__REMARK_COLOR_BEGIN__Ожидаемая добыча:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m [fluid-name] wood-pulp=Древесная масса @@ -92,22 +94,69 @@ molten-gold=Расплавленное золото [recipe-name] moist-stromatolite-remnant-desiccation=Высушивание влажного строматолита +moist-stromatolite-remnant-desiccation-without-steam=Высушивание влажного строматолита gold-stromatolite-seed-to-peat=Обработка семян золотого строматолита wood-liquefaction=Сжижение древесины -provisional-rocket-part=Часть временной ракеты +provisional-rocket-part=Импровизированная деталь ракеты cupriavidus-necator-starter=Cupriavidus necator (стартовая культура) plastic-from-cupriavidus-necator=Биопластик +plastic-from-dead-cupriavidus-necator=Биопластик +low-density-structure-gold=Конструкция малой плотности +rocket-fuel-from-wood-pulp-and-peat=Био-ракетное топливо +nutrients-from-wood-pulp=Питательные вещества из древесной массы +active-noise-cancelling=Активное шумоподавление casting-gold=Литьё золота +gold-ore-crushing=Дробление золотой руды + +[recipe-description] +moist-stromatolite-remnant-desiccation-without-steam=Используется для балансировки производства пара. +gold-stromatolite-seed-to-peat=Используется для удаления излишков семян золотого строматолита. [technology-name] -wood-science-pack=Деревянный научный пакет -burner-automation=Автоматизация на горелках -planet-discovery-nauvis=Открытие планеты Навис +wood-science-pack=Деревянный исследовательский пакет +burner-automation=Твердотопливная автоматизация +planet-discovery-nauvis=Открытие планеты Наувис planet-discovery-lignumis=Открытие луны Лигнумис +iron-processing=Обработка железа +copper-processing=Обработка меди +lumber-mill=Лесопильня +deep-miner=Глубинный бур +gold-fluid-handling=Золотая транспортировка и хранение жидкостей +steam-automation=Паровая автоматизация +steam-science-pack=Паровой исследовательский пакет +wood-liquefaction=Сжижение древесины +provisional-rocketry=Импровизированное ракетостроение +basic-gun-turret=Базовая пулемётная турель +basic-construction-robotics-gold=Базовый строительная робототехника (золото) +basic-construction-robotics-copper=Базовый строительная робототехника (медь) +wood-logistics=Деревянная логистика +automation=Электрическая автоматизация +tree-seeding=Базовое сельское хозяйство +basic-repair-pack=Базовый ремонтный комплект basic-radar=Базовый радар active-noise-cancelling=Активное шумоподавление -quality-assembler=Качественная сборочная машина -automation-science-pack=Покиньте Лигнумис для изучения продвинутых технологий. +quality-assembler=Качественный сборочный автомат +aai-wood-loader=Деревянный погрузчик +basic-ore-crushing=Базовое дробление руды + +[technology-description] +wood-science-pack=Позволяет исследовать базовые технологии на основе древесины. +burner-automation=Технология для базовой автоматизации с использованием твердотопливных машин. +planet-discovery-nauvis=Планета с умеренным климатом, предлагающая все необходимые ресурсы. +planet-discovery-lignumis=Луна на орбите Наувиса, которая мало что может предложить, кроме растительности и металла, который может быть полезен. +lumber-mill=Передовой станок для обработки древесины. +deep-miner=Открывает доступ к огромным месторождениям золота, которые ранее были недоступны. +steam-automation=Позволяет исследовать более сложные технологии на основе древесины и золота. +wood-liquefaction=Превращение дерева в жидкость открывает новые возможности. +provisional-rocketry=Нам нужно как-то убраться с этой луны. Это наш единственный шанс! +basic-gun-turret=Самая простая автоматическая защита. Это немного, но пока этого должно хватить. +basic-construction-robotics-gold=Самая базовая помощь в личных строительных нуждах. +basic-construction-robotics-copper=Самая базовая помощь в личных строительных нуждах. +wood-logistics=Медленная, но всё же автоматическая транспортировка предметов. +tree-seeding=[entity=burner-agricultural-tower] позволяет высаживать семена в пригодную для посева почву. Посаженные семена вырастают в деревья, которые можно собирать.\n[entity=tree-plant] может расти на траве и земле. [entity=gold-stromatolite] может расти на [tile=natural-gold-soil]. +active-noise-cancelling=Помогает справляться с шумом. +quality-assembler=Высококлассный сборочный автомат, создающий машины только самого высокого качества, используя особые ресурсы, которые можно найти только на Лигнумисе. +automation-science-pack=Покиньте Лигнумис для исследования продвинутых технологий. [modifier-description] basic-gun-turret-attack-bonus=Урон базовой турели: +__1__ @@ -121,18 +170,45 @@ wood=Древесное топливо quality-catalyst=Катализатор качества [mod-setting-name] -lignumis-belt-progression=Прогрессивные рецепты конвейеров -lignumis-technology-progression=Прогрессивные технологии -lignumis-lumber-mill-more-recipes=Дополнительные рецепты для лесопильни +lignumis-belt-progression=Включить прогрессивные рецепты конвейеров +lignumis-inserter-progression=Включить прогрессивные рецепты манипуляторов +lignumis-ammo-progression=Включить прогрессивные рецепты патронов +lignumis-technology-progression=Включить прогрессивные технологии +lignumis-basic-circuit-board=Включить базовую схему +lignumis-circuit-progression=Включить прогрессивные рецепты электросхем +lignumis-assembler-progression=Включить прогрессивные рецепты сборочных автоматов +lignumis-lumber-mill-more-recipes=Добавить дополнительные рецепты для лесопильни +lignumis-fulgora-wood=Добавить древесину на Фульгору +lignumis-early-robots=Ещё более ранние персональные дроны [mod-setting-description] -lignumis-technology-progression=Добавляет деревянные и паровые научные пакеты к большинству поздних технологий. Отключение этого параметра снижает их значимость в поздней игре. -lignumis-lumber-mill-more-recipes=Лесопильня может создавать базовые турели, сборочные машины и манипуляторы на горелках. +lignumis-belt-progression=Жёлтые конвейеры будут требовать деревянные конвейеры для создания. +lignumis-inserter-progression=Жёлтые манипуляторы будут требовать твердотопливные манипуляторы для создания. +lignumis-ammo-progression=Магазины огнестрельного оружия будут требовать магазин с деревянными дротиками для создания. +lignumis-technology-progression=Добавляет деревянные и паровые исследовательские пакеты к большинству поздних технологий. Отключение этого параметра снижает их значимость в поздней игре. +lignumis-basic-circuit-board=Рецепты используют базовые схемы вместо золотых кабелей и золотых плит, где это возможно. Будут добавлены и золотой, и медный рецепты создания. +lignumis-circuit-progression=Электросхемы будут требовать базовые схемы для создания. +lignumis-assembler-progression=Сборочный автомат 1 будет трубовать твердотопливный сборочный автомат для создания. +lignumis-lumber-mill-more-recipes=Лесопильня может создавать базовые турели, твердотопливные сборочные атоматы и твердотопливные манипуляторы. При включении всех прогрессивных рецептов улучшается баланс использования древесины и помогает в играх-марафонах. +lignumis-fulgora-wood=Добавляет деревянные шестерни в переработку металлолома как источник древесины. Отключите, если у вас есть другой источник древесины или вы отправляете её с других планет. +lignumis-early-robots=Персональные дроны будут передвинуты из паровых в деревянные исследовательские пакеты и получат небольшое ускорение. + +[autoplace-control-names] +lignumis_enemy_base=Вражеские базы Лигнумиса + +[entity-status] +no-quality-catalyst=Нет катализатора качества + +[description] +accepted-catalysts=Разрешённые катализаторы +quality-catalyst-energy-value=Значение качества [gui] quality-catalyst=Катализатор качества [lignumis] -start-new-game=Лигнумис рассчитан на игру с нуля, так как он удлиняет ранний этап перед Нависом. -provisional-rocket-silo-button=Спастись на Навис -provisional-rocket-silo-description=Заполните ракету ресурсами и запустите её, чтобы сбежать на Навис.\nНе забудьте взять материалы для запуска производства железа, меди и древесины. \ No newline at end of file +start-new-game=Лигнумис рассчитан на игру с нуля, так как он удлиняет ранний этап перед Наувисом. +provisional-rocket-silo-button=Сбежать на __1__ +provisional-rocket-silo-button-tooltip-inventory=Ваш инвентарь должен быть пустой! +provisional-rocket-silo-button-tooltip-target=Вы ещё не знаете куда сбежать! +provisional-rocket-silo-description=Заполните ракету ресурсами и запустите её, чтобы сбежать на __1__.\nНе забудьте взять материалы для запуска производства железа, меди и древесины. From c6951547a602024d0ffa824dd4aa4852b47c13a6 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 21 Jun 2025 10:34:43 +0200 Subject: [PATCH 139/150] 1.0.54 --- lignumis/changelog.txt | 8 ++++++++ lignumis/info.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 80440cf..2cc2846 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.54 +Date: 21.06.2025 + Breaking Changes: + - Forbid lumber mill in space + Changes: + - Add astroponics productivity research + - Update russian locale (thanks Onseshigo) +--------------------------------------------------------------------------------------------------- Version: 1.0.53 Date: 08.06.2025 Changes: diff --git a/lignumis/info.json b/lignumis/info.json index 4a359f8..f7c8e50 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.53", + "version": "1.0.54", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 74134c6e8a6cd7eea204d887a22249ef3c5e511a Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 22 Jun 2025 09:36:59 +0200 Subject: [PATCH 140/150] The setting for wood on Fulgora is now off by default --- lignumis/settings.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 9b2d2ca..61a92cc 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -59,7 +59,7 @@ data:extend({ type = "bool-setting", name = "lignumis-fulgora-wood", setting_type = "startup", - default_value = true, + default_value = false, order = "i" }, { From 37bbdf10964662b1044e0ec114ac599149d444dc Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sun, 22 Jun 2025 23:51:07 +0200 Subject: [PATCH 141/150] Readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 79d9318..c703f04 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ _________________ ## Compatibility with other planet mods -The following planet mods are tested for (at least technical) compatibility: +The following planet mods are tested for (at least technical) compatibility. The ones marked with * have been successfully beaten by me. - [Castra](https://mods.factorio.com/mod/castra) - [Cerys](https://mods.factorio.com/mod/Cerys-Moon-of-Fulgora) + [Wooden Cerys: Lunaponics](https://mods.factorio.com/mod/cerys-lunaponics) @@ -83,8 +83,8 @@ The following planet mods are tested for (at least technical) compatibility: - [Dea Dia System](https://mods.factorio.com/mod/dea-dia-system) - [Janus](https://mods.factorio.com/mod/janus) - [Maraxsis](https://mods.factorio.com/mod/maraxsis) -- [Moshine](https://mods.factorio.com/mod/Moshine) -- [Muluna](https://mods.factorio.com/mod/planet-muluna) +- [Moshine](https://mods.factorio.com/mod/Moshine)* +- [Muluna](https://mods.factorio.com/mod/planet-muluna)* - [Terra Palus](https://mods.factorio.com/mod/terrapalus) - [Secretas & Frozeta](https://mods.factorio.com/mod/secretas) From 88bf78f6154c2f4fba319b3c9319b1324b72a003 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Tue, 24 Jun 2025 22:55:56 +0200 Subject: [PATCH 142/150] Reduce noise --- lignumis/prototypes/content/noise.lua | 28 +++++++++---------- .../prototypes/content/wood-logistics.lua | 6 ++-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lignumis/prototypes/content/noise.lua b/lignumis/prototypes/content/noise.lua index e48d2fc..4474df5 100644 --- a/lignumis/prototypes/content/noise.lua +++ b/lignumis/prototypes/content/noise.lua @@ -65,9 +65,9 @@ end -- Walls absorb noise -emit_constant("wall", "wooden-wall", -15) -emit_constant("wall", "stone-wall", -25) -emit_constant("gate", "gate", -20) +emit_constant("wall", "wooden-wall", -25) +emit_constant("wall", "stone-wall", -40) +emit_constant("gate", "gate", -30) -- Buildings emit noise @@ -100,18 +100,18 @@ emit("lab", "biolab", 20) emit("locomotive", "locomotive", 200) emit_constant("locomotive", "locomotive", 10) ---emit_constant("transport-belt", "wood-transport-belt", 2.4) +--emit_constant("transport-belt", "wood-transport-belt", 2) emit_constant("transport-belt", "transport-belt", 3) emit_constant("transport-belt", "fast-transport-belt", 4) emit_constant("transport-belt", "express-transport-belt", 6) emit_constant("transport-belt", "turbo-transport-belt", 8) ---emit_constant("underground-belt", "wood-underground-belt", 15) -emit_constant("underground-belt", "underground-belt", 20) -emit_constant("underground-belt", "fast-underground-belt", 30) -emit_constant("underground-belt", "express-underground-belt", 40) -emit_constant("underground-belt", "turbo-underground-belt", 50) ---emit_constant("splitter", "wood-splitter", 30) -emit_constant("splitter", "splitter", 40) -emit_constant("splitter", "fast-splitter", 50) -emit_constant("splitter", "express-splitter", 60) -emit_constant("splitter", "turbo-splitter", 80) \ No newline at end of file +--emit_constant("underground-belt", "wood-underground-belt", 7.5) +emit_constant("underground-belt", "underground-belt", 10) +emit_constant("underground-belt", "fast-underground-belt", 20) +emit_constant("underground-belt", "express-underground-belt", 30) +emit_constant("underground-belt", "turbo-underground-belt", 40) +--emit_constant("splitter", "wood-splitter", 20) +emit_constant("splitter", "splitter", 30) +emit_constant("splitter", "fast-splitter", 40) +emit_constant("splitter", "express-splitter", 50) +emit_constant("splitter", "turbo-splitter", 60) \ No newline at end of file diff --git a/lignumis/prototypes/content/wood-logistics.lua b/lignumis/prototypes/content/wood-logistics.lua index 08c3a1f..a575ba8 100644 --- a/lignumis/prototypes/content/wood-logistics.lua +++ b/lignumis/prototypes/content/wood-logistics.lua @@ -10,10 +10,10 @@ Belt.EntityBuilder:new() :animationSpeedMultiplier(1.01) :apply({ transportBelt = { - emissions_per_second = { noise = 0.04 } + emissions_per_second = { noise = 2 / 60 } }, undergroundBelt = { - emissions_per_second = { noise = 0.25 }, + emissions_per_second = { noise = 7.5 / 60 }, factoriopedia_simulation = { init = [[ @@ -28,7 +28,7 @@ Belt.EntityBuilder:new() } }, splitter = { - emissions_per_second = { noise = 0.5 } + emissions_per_second = { noise = 20 / 60 } } }) From 96b685a222de9557fc776bca965cbfcd463560e4 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 25 Jun 2025 00:39:08 +0200 Subject: [PATCH 143/150] Add Lignumis recipe for processing unit --- lignumis/locale/en/strings.cfg | 1 + .../prototypes/content/mid-game-recipes.lua | 32 +++++++++++++++++-- .../content/steam-assembling-machine.lua | 2 +- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index a2409a1..45d7b68 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -107,6 +107,7 @@ nutrients-from-wood-pulp=Nutrients from wood pulp active-noise-cancelling=Active noise cancelling casting-gold=Casting gold gold-ore-crushing=Gold ore crushing +processing-unit-gold=Processing unit (gold) [recipe-description] moist-stromatolite-remnant-desiccation-without-steam=Used for balancing the production of steam. diff --git a/lignumis/prototypes/content/mid-game-recipes.lua b/lignumis/prototypes/content/mid-game-recipes.lua index 7344436..bf57604 100644 --- a/lignumis/prototypes/content/mid-game-recipes.lua +++ b/lignumis/prototypes/content/mid-game-recipes.lua @@ -167,7 +167,7 @@ data:extend({ allow_productivity = true, icons = { { icon = "__base__/graphics/icons/low-density-structure.png" }, - { icon = Lignumis.graphics .. "icons/gold-plate.png", scale = 0.25, shift = { 8, 8 } } + { icon = Lignumis.graphics .. "icons/gold-plate.png", scale = 0.25, shift = { 8, 8 } } } }, { @@ -216,6 +216,34 @@ data:extend({ } }) +if settings.startup["lignumis-basic-circuit-board"].value then + data:extend({ + { + type = "recipe", + name = "processing-unit-gold", + category = "crafting-with-steam", + additional_categories = { "electromagnetics" }, + enabled = false, + auto_recycle = false, + energy_required = 10, + ingredients = + { + { type = "item", name = "basic-circuit-board", amount = 20 }, + { type = "item", name = "gold-cable", amount = 8 }, + { type = "item", name = "plastic-bar", amount = 3 }, + { type = "fluid", name = "wood-pulp", amount = 5 } + }, + results = { { type = "item", name = "processing-unit", amount = 1 } }, + allow_productivity = true, + icons = { + { icon = "__base__/graphics/icons/processing-unit.png" }, + { icon = Lignumis.graphics .. "icons/gold-cable.png", scale = 0.25, shift = { 8, 8 } } + } + } + }) + Technology:new("processing-unit"):addRecipe("processing-unit-gold") +end + local plastics = Technology:new("plastics") plastics:addRecipe("cupriavidus-necator-starter") plastics:addRecipe("cupriavidus-necator") @@ -255,4 +283,4 @@ rocket_fuel_productivity:addEffect({ type = "change-recipe-productivity", recipe = "rocket-fuel-from-wood-pulp-and-peat", change = 0.1 -}) \ No newline at end of file +}) diff --git a/lignumis/prototypes/content/steam-assembling-machine.lua b/lignumis/prototypes/content/steam-assembling-machine.lua index 2a6322c..2a6871e 100644 --- a/lignumis/prototypes/content/steam-assembling-machine.lua +++ b/lignumis/prototypes/content/steam-assembling-machine.lua @@ -9,7 +9,7 @@ assembling_machine.name = "steam-assembling-machine" assembling_machine.icons = { { icon = Lignumis.graphics .. "icons/steam-assembling-machine.png", icon_size = 64 } } assembling_machine.minable.result = "steam-assembling-machine" assembling_machine.next_upgrade = "assembling-machine-1" -assembling_machine.module_slots = nil +assembling_machine.module_slots = 2 assembling_machine.corpses = "steam-assembling-machine-remnants" assembling_machine.resistances = nil assembling_machine.graphics_set = table.deepcopy(data.raw["assembling-machine"]["assembling-machine-1"].graphics_set) From 3075523b3f9ad095cb4dd4037dd3f1207ee4ed2f Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 25 Jun 2025 00:39:29 +0200 Subject: [PATCH 144/150] Gold cable can be crafted in the electromagnetic plant --- lignumis/prototypes/content/gold/intermediates.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lignumis/prototypes/content/gold/intermediates.lua b/lignumis/prototypes/content/gold/intermediates.lua index 3f4f010..3c7c56e 100644 --- a/lignumis/prototypes/content/gold/intermediates.lua +++ b/lignumis/prototypes/content/gold/intermediates.lua @@ -40,6 +40,8 @@ data:extend({ { type = "recipe", name = "gold-cable", + category = "crafting", + additional_categories = { "electromagnetics" }, ingredients = { { type = "item", name = "gold-plate", amount = 1 } }, results = { { type = "item", name = "gold-cable", amount = 2 } }, allow_productivity = true From bf2a844eebcf2f6dc94eda8f570da980990c8fc8 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 25 Jun 2025 00:40:27 +0200 Subject: [PATCH 145/150] Crushing Industry: Molten gold is made from crushed gold Crushing gold returns moist stromatolite remnant instead of sand --- .../compatibility/crushing-industry.lua | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lignumis/prototypes/compatibility/crushing-industry.lua b/lignumis/prototypes/compatibility/crushing-industry.lua index 4c9a5ac..f716c16 100644 --- a/lignumis/prototypes/compatibility/crushing-industry.lua +++ b/lignumis/prototypes/compatibility/crushing-industry.lua @@ -1,5 +1,4 @@ local item_sounds = require("__base__.prototypes.item_sounds") -local Technology = require("__cf-lib__/data/Technology") local Recipe = require("__cf-lib__/data/Recipe") if not mods["crushing-industry"] then return end @@ -11,8 +10,8 @@ data:extend({ name = "crushed-gold-ore", icon = Lignumis.graphics .. "icons/crushed-gold-ore.png", pictures = { - { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore.png", scale = 0.5, mipmap_count = 4 }, - { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore-1.png", scale = 0.5, mipmap_count = 4 }, + { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore.png", scale = 0.5, mipmap_count = 4 }, + { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore-1.png", scale = 0.5, mipmap_count = 4 }, { size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore-2.png", scale = 0.5, mipmap_count = 4 }, }, subgroup = "raw-resource", @@ -79,16 +78,21 @@ data:extend({ } }) +Recipe:new("molten-gold"):replaceIngredient("gold-ore", "crushed-gold-ore", 75) + if settings.startup["crushing-industry-byproducts"].value then - table.insert(data.raw["recipe"]["crushed-gold-ore"].results, { type = "item", name = "gold-ore", amount = 1, probability = 0.05 }) - table.insert(data.raw["recipe"]["crushed-gold-ore"].results, { type = "item", name = "sand", amount = 1, probability = 0.02 }) + table.insert(data.raw["recipe"]["crushed-gold-ore"].results, + { type = "item", name = "gold-ore", amount = 1, probability = 0.05 }) + table.insert(data.raw["recipe"]["crushed-gold-ore"].results, + { type = "item", name = "moist-stromatolite-remnant", amount = 1, probability = 0.02 }) end local gold_recipe = Recipe:new("burner-crusher") :replaceIngredient("iron-gear-wheel", "wooden-gear-wheel") :replaceIngredient("iron-plate", "gold-plate") :assign({ - category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting" + category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or + "crafting" }) gold_recipe:clone("burner-crusher-copper") @@ -101,4 +105,4 @@ gold_recipe:clone("burner-crusher-copper") } }) :unlockedByTechnology("copper-processing") - :apply() \ No newline at end of file + :apply() From cde23875b5b99b62dc5fe00476ccceb5dc5f28f0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Wed, 25 Jun 2025 09:54:04 +0200 Subject: [PATCH 146/150] 1.0.55 --- lignumis/changelog.txt | 11 +++++++++++ lignumis/info.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 2cc2846..efbedbd 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,15 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.55 +Date: 25.06.2025 + Breaking Changes: + - Crushing Industry: Molten gold is made from crushed gold (was gold ore) + - Crushing Industry: Crushing gold returns moist stromatolite remnant instead of sand + Changes: + - Gold cable can be crafted in the electromagnetic plant + - Add a Lignumis recipe for processing unit + - Balance (reduce) noise pollution + - The setting for wood on Fulgora is now off by default +--------------------------------------------------------------------------------------------------- Version: 1.0.54 Date: 21.06.2025 Breaking Changes: diff --git a/lignumis/info.json b/lignumis/info.json index f7c8e50..cb3af7f 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.54", + "version": "1.0.55", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 90a1805529298c73582e3694735a33d4bf514a7b Mon Sep 17 00:00:00 2001 From: Lucanoria Date: Wed, 2 Jul 2025 20:12:43 +0200 Subject: [PATCH 147/150] Added German Translation --- README.md | 3 +- lignumis/changelog.txt | 5 + lignumis/locale/de/strings.cfg | 216 +++++++++++++++++++++++++++++++++ 3 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 lignumis/locale/de/strings.cfg diff --git a/README.md b/README.md index c703f04..d439a1a 100644 --- a/README.md +++ b/README.md @@ -168,9 +168,10 @@ _________________ ### Translations -- Simplified chinese (zh-CN): cyx2015s +- German (de): Lucanoria - Polish (pl): StarGazer - Russian (ru): Fr_Dae +- Simplified chinese (zh-CN): cyx2015s ### Assets / Code diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index efbedbd..610bfb8 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 1.0.56 +Date: 06.07.2025 + Changes: + - Add german translation (thanks Lucanoria) +--------------------------------------------------------------------------------------------------- Version: 1.0.55 Date: 25.06.2025 Breaking Changes: diff --git a/lignumis/locale/de/strings.cfg b/lignumis/locale/de/strings.cfg new file mode 100644 index 0000000..644ec96 --- /dev/null +++ b/lignumis/locale/de/strings.cfg @@ -0,0 +1,216 @@ +[mod-name] +lignumis=○ Lignumis + +[mod-description] +lignumis=Tauche ein in die Welt von Lignumis, einem Mond von Nauvis, der nur die grundlegendsten Technologien bietet. + +[space-location-name] +lignumis=Lignumis + +[space-location-description] +lignumis=Lignumis ist ein Mond, der Nauvis umkreist. Er ist Nauvis recht ähnlich, scheint aber jünger zu sein und über weniger Ressourcen zu verfügen. + +[airborne-pollutant-name] +noise=Lärm + +[airborne-pollutant-name-with-amount] +noise=__1__ Lärm + +[entity-name] +wood-lab=Holz Labor +peat=Torf +burner-agricultural-tower=Befeuerter Landwirtschaftsturm +burner-assembling-machine=Befeuerte Montagemaschine +burner-long-handed-inserter=Befeuerter Langer Greifarm +lumber-mill=Sägewerk +gold-stromatolite=Gold-Stromatolith +gold-stromatolite-plant=Gold-Stromatolith-Pflanze +gold-stromatolite-lignumis=Gold-Stromatolith +gold-patch=Gold Feld +deep-miner=Tiefenbohrer +gold-pipe=Gold-Rohr +gold-pipe-to-ground=Unterirdisches Gold-Rohr +gold-storage-tank=Goldener Lagertank +desiccation-furnace=Trocknungsofen +steam-assembling-machine=Dampf-Montagemaschine +provisional-rocket-silo=Provisorisches Raketensilo +provisional-rocket-silo-ready=Provisorisches Raketensilo (bereit) +basic-gun-turret=Grundlegender Geschützturm +basic-construction-robot-gold=Grundlegender Konstruktionsroboter (Gold) +basic-construction-robot-copper=Grundlegender Konstruktionsroboter robot (Kupfer) +wood-transport-belt=Hölzernes Fließband +wood-underground-belt=Hölzernes Untergrund Fließband +wood-splitter=Hölzernes Teilerfließband +basic-radar=Grundlegendes Radar +active-noise-cancelling-tower=Aktive Geräuschunterdrückungsturm +quality-assembler=Qualitäts-Montagemaschine +aai-wood-loader=Hölzerner Lader +wood-lane-splitter=Hölzernes Teilerfließband +lignumis-spawner-small=Lignumis Laichballen +lignumis-small-wriggler-pentapod=Kleiner Lignumis Fünfbein-Zappler +lignumis-medium-wriggler-pentapod=Mittelgroßer Lignumis Fünfbein-Zapler + +[entity-description] +lumber-mill=Fortschrittliche Maschine zur Holzbearbeitung. +quality-assembler=High-End- Montagemaschine, die nur die besten Maschinen herstellt. Verleiht 25% zusätzliche Qualität durch den Verbrauch von [item=gold-quality-catalyst]. Die Oberflächenbedingungen und Zutaten bleiben ansonsten unverändert. +gold-stromatolite-plant=Sammle Gold-Stromatolithen für Bakterien, die Gold aus dem Boden anreichern.\n__REMARK_COLOR_BEGIN__Erwarteter Ertrag:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m + +[equipment-name] +basic-portable-generator-equipment-gold=Grundlegender tragbarer Generatoren (Gold) +basic-portable-generator-equipment-copper=Grundlegender tragbarer Generatoren (Kupfer) +basic-personal-roboport-equipment-gold=Grundlegender persönlicher Roboterhangar (Gold) +basic-personal-roboport-equipment-copper=Grundlegender persönlicher Roboterhangar (Kupfer) + +[item-name] +wooden-gear-wheel=Holzzahnrad +wood-science-pack=Wissenschaftspaket für Holz +peat=Torf +gold-stromatolite-seed=Gold-Stromatolith-Samen +gold-ore=Gold erz +gold-bacteria=Gold Bakterien +gold-plate=Goldplatten +gold-cable=Goldkabel +moist-stromatolite-remnant=Feuchte Stromatolithenreste +steam-science-pack=Wissenschaftspaket für Dampf +destination-nauvis=Reise nach Nauvis +lumber=Holz +basic-repair-pack=Grundlegendes Reparaturpaket +cupriavidus-necator=Cupriavidus necator +dead-cupriavidus-necator=Tote Cupriavidus necator +gold-quality-catalyst=Katalysator in Goldqualität +wood-armor=Holz Rüstung +wood-darts-magazine=Holz Dart Magazin +basic-circuit-board=Grundlegender Schaltkreis +crushed-gold-ore=Zerkleinertes Golderz + +[item-description] +wooden-wall=Verwende Holzwände, um deine Basis vor den Einheimischen zu schützen und den Lärmpegel zu reduzieren. +stone-wall=Besserer akustischer und physischer Schutz als sein Gegenstück aus Holz. +gold-stromatolite-seed=Pflanze den Samen, um Gold-Stromatolithen wachsen zu lassen. Sie beherbergen Bakterien, die Gold aus dem Boden anreichern.\n__REMARK_COLOR_BEGIN__Expected yield:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m + +[fluid-name] +wood-pulp=Holzzellstoff +molten-gold=Geschmolzenes Gold + +[recipe-name] +moist-stromatolite-remnant-desiccation=Feuchte Stromatolithenreste austrocknen +moist-stromatolite-remnant-desiccation-without-steam=Feuchte Stromatolithenreste austrocknen +gold-stromatolite-seed-to-peat=Gold-Stromatolith-Samen verarbeiten +wood-liquefaction=Holzverflüssigung +provisional-rocket-part=Provisorisches Raketenteil +cupriavidus-necator-starter=Cupriavidus necator (starter culture) +plastic-from-cupriavidus-necator=Biokunststoff +plastic-from-dead-cupriavidus-necator=Biokunststoff +low-density-structure-gold=Leichtbauteil +rocket-fuel-from-wood-pulp-and-peat=Bio-Raketentreibstoff +nutrients-from-wood-pulp=Nährstoffe aus Holzzellstoff +active-noise-cancelling=Aktive Geräuschunterdrückung +casting-gold=Gold gießen +gold-ore-crushing=Zerkleinerung von Golderz +processing-unit-gold=Verarbeitungseinheit (Gold) + +[recipe-description] +moist-stromatolite-remnant-desiccation-without-steam=Wird für das Gleichgewicht bei der Dampferzeugung verwendet. +gold-stromatolite-seed-to-peat=Dient zur Beseitigung überschüssiger goldener Stromatolithsamen. + +[technology-name] +wood-science-pack=Wissenschaftspaket für Holz +burner-automation=Befeuerte-Automatisierung +planet-discovery-nauvis=Entdeckung des Planeten Nauvis +planet-discovery-lignumis=Entdeckung des Mondes Lignumis +iron-processing=Eisenverarbeitung +copper-processing=Kupferverarbeitung +lumber-mill=Sägewerk +deep-miner=Tiefenbohrer +gold-fluid-handling=Handhabung von flüssigkeiten mit Gold +steam-automation=Dampf-Automatisierung +steam-science-pack=Wissenschaftspaket für Dampf +wood-liquefaction=Holzverflüssigung +provisional-rocketry=Provisorische Raketentechnik +basic-gun-turret=Grundlegender Geschützturm +basic-construction-robotics-gold=Grundlegende Baurobotertechnik (Gold) +basic-construction-robotics-copper=Grundlegende Baurobotertechnik (Kupfer) +wood-logistics=Holzlogistik +automation=Elektrische Automatisierung +tree-seeding=Landwirtschaftliche Grundlagen +basic-repair-pack=Grundlegendes Reparaturpaket +basic-radar=Grundlegendes Radar +active-noise-cancelling=Aktive Geräuschunterdrückung +quality-assembler=Qualitäts-Montagemaschine +aai-wood-loader=Holzlader +basic-ore-crushing=Grundlegende Zerkleinerung von Erzen +astroponics-productivity=Astroponische Produktivität + +[technology-description] +wood-science-pack=Ermöglicht die Erforschung von Basistechnologien auf der Grundlage von Holzprodukten. +burner-automation=Technologie für die Basisautomatisierung mit Verbrennermaschinen. +planet-discovery-nauvis=Ein gemäßigter Planet mit allen üblichen Ressourcen. +planet-discovery-lignumis=Ein Mond, der Nauvis umkreist und außer etwas Vegetation und einem Metall, das nützlich sein könnte, nicht viel zu bieten hat. +lumber-mill=Fortschrittliche Maschine zur Holzbearbeitung. +deep-miner=Ermöglicht den Zugang zu riesigen Goldvorkommen, die bisher unerreichbar waren. +steam-automation=Ermöglicht die Erforschung anspruchsvollerer Technologien auf der Grundlage von Holzprodukten und Gold. +wood-liquefaction=Die Umwandlung von Holz in eine Flüssigkeit bietet neue Möglichkeiten. +provisional-rocketry=Wir müssen irgendwie von diesem Mond wegkommen. Das ist unsere einzige Möglichkeit! +basic-gun-turret=Die einfachste automatische Verteidigung. Es ist nicht viel, aber es muss fürs Erste genügen. +basic-construction-robotics-gold=Die grundlegendste Hilfe für den persönlichen Baubedarf. +basic-construction-robotics-copper=Die grundlegendste Hilfe für den persönlichen Baubedarf. +wood-logistics=Langsamer, aber automatischer Transport von Waren. +tree-seeding=[entity=burner-agricultural-tower] ermöglicht das Einpflanzen von Samen in samenfähigen Boden. Gepflanzte Samen wachsen zu Bäumen, die geerntet werden können.\n[entity=tree-plant] kann auf Gras und Erde wachsen. [entity=gold-stromatolite] kann auf [tile=natural-gold-soil] wachsen. +active-noise-cancelling=Hilft beim Umgang mit Lärm. +quality-assembler=High-End-Montagemaschine, der nur Maschinen von höchster Qualität herstellt und dafür eine besondere Ressource verwendet, die es nur auf Lignumis gibt. +automation-science-pack=Verlassen Lignumis, um fortschrittliche Technologieforschung zu ermöglichen. + +[modifier-description] +basic-gun-turret-attack-bonus=Grundlegender Geschützturm schaden: +__1__ + +[tile-name] +wood-floor=Holzboden +natural-gold-soil=Goldhaltige Erde + +[fuel-category-name] +wood=Holzbrennstoff +quality-catalyst=Qualitätskatalysator + +[mod-setting-name] +lignumis-belt-progression=Progressiven Fließband rezepte Aktivieren +lignumis-inserter-progression=Progressiven Greifarm rezepte Aktivieren +lignumis-ammo-progression=Progressive Munitionsrezepte aktivieren +lignumis-technology-progression=Progressive Technologien aktivieren +lignumis-basic-circuit-board=Grundlegender Schaltkreis aktivieren +lignumis-circuit-progression=Progressive Schaltkreis rezepte aktivieren +lignumis-assembler-progression=Progressive Montagemaschinen-Rezepte aktivieren +lignumis-lumber-mill-more-recipes=Weitere Rezepte für das Sägewerk aktivieren +lignumis-fulgora-wood=Holz zu Fulgora hinzufügen +lignumis-early-robots=Noch früher persönliche Roboter + +[mod-setting-description] +lignumis-belt-progression=Für die Herstellung von Gelben Fließbändern sind Holzfließbänder erforderlich. +lignumis-inserter-progression=Für die Herstellung des gelben elektrischen Greifarms wird ein Befeuerter Greifarm benötigt. +lignumis-ammo-progression=Für die Herstellung von Schusswaffenmagazinen werden hölzerne Dartmagazine benötigt. +lignumis-technology-progression=Fügt den meisten Technologien im späten Spiel Wissenschaftspakete für Holz und Dampf hinzu. Durch die Deaktivierung dieser Funktion wird die Relevanz der Wissenschaftspakete von Lignumis im späten Spiel nichtig. +lignumis-basic-circuit-board=In den Rezepten werden grundlegende Schaltkreise anstelle von Goldkabeln und gegebenenfalls Goldplatten verwendet. Es werden sowohl Gold- als auch Kupferrezepte hinzugefügt. +lignumis-circuit-progression=Für die Herstellung elektrischer Schaltkreise werden grundlegende Schaltkreise benötigt. +lignumis-assembler-progression=Für die Herstellung von Montagemaschine 1 werden Befeuerte-Montagemaschinen benötigt. +lignumis-lumber-mill-more-recipes=Die Sägewerke können auch grundlegende Geschütztürme, befeuerte-Montagemaschinen und befeuerter Greifarme herstellen. Verbessert das Balancing der Holznutzung, wenn alle progressiven Rezepte aktiviert sind und hilft bei Marathonspielen. +lignumis-fulgora-wood=Dies fügt dem Schrottrecycling Holzzahnräder als Hauptquelle für Holz hinzu. Deaktiviert dies, wenn ihr eine andere Quelle für Holz habt oder alles von anderen Planeten importiert. +lignumis-early-robots=Persönliche Roboter werden von der Dampf- auf die Holzforschung umgestellt und sind ein klein wenig schneller. + +[autoplace-control-names] +lignumis_enemy_base=Lignumis feindliche Basen + +[entity-status] +no-quality-catalyst=Kein Qualitätskatalysator + +[description] +accepted-catalysts=Akzeptierte Katalysatoren +quality-catalyst-energy-value=Qualitätswert + +[gui] +quality-catalyst=Qualitätskatalysator + +[lignumis] +start-new-game=Lignumis ist dafür gedacht, in einem neuen Spiel gespielt zu werden, da es das Early Game verlängert. +provisional-rocket-silo-button=Flüchte nach __1__ +provisional-rocket-silo-button-tooltip-inventory=Dein persönliches Inventar muss leer sein! +provisional-rocket-silo-button-tooltip-target=Du weißt noch nicht, wohin du gehen kannst! +provisional-rocket-silo-description=Fülle das Raketeninventar und starte die Rakete, um nach __1__ zu fliehen.\nAchte darauf, dass du Material mitnimmst, um deine Eisen-, Kupfer- und Holzproduktion anzukurbeln. \ No newline at end of file From 82f882d92039ec6d2f7e632b4a155c9924b2ee0e Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 7 Jul 2025 23:36:58 +0200 Subject: [PATCH 148/150] Fix bug with Astrponics 1.7.0 --- .../prototypes/integrations/astroponics-updates.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lignumis/prototypes/integrations/astroponics-updates.lua b/lignumis/prototypes/integrations/astroponics-updates.lua index 72bc125..c0ef83f 100644 --- a/lignumis/prototypes/integrations/astroponics-updates.lua +++ b/lignumis/prototypes/integrations/astroponics-updates.lua @@ -1,2 +1,10 @@ -data.raw.technology["tree-seeding"].hidden = false -data.raw.technology["tree-seeding"].enabled = true +local Technology = require("__cf-lib__/data/Technology") + +-- This just undoes what astroponics changes to tree seeding +Technology:new("tree-seeding"):addRecipe("wood-processing") +Technology:new("astroponics"):removeRecipe("wood-processing") +for i, effect in pairs(data.raw.technology["tree-seeding"].effects) do + if effect.type == "change-recipe-productivity" and effect.recipe == "wood-processing" then + table.remove(data.raw.technology["tree-seeding"].effects, i) + end +end \ No newline at end of file From fd8c0c39a46ada33ed989bbe21814a68cab40e3d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 7 Jul 2025 23:49:55 +0200 Subject: [PATCH 149/150] 1.0.56 --- lignumis/changelog.txt | 4 +++- lignumis/info.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lignumis/changelog.txt b/lignumis/changelog.txt index 610bfb8..2b8af6b 100644 --- a/lignumis/changelog.txt +++ b/lignumis/changelog.txt @@ -1,8 +1,10 @@ --------------------------------------------------------------------------------------------------- Version: 1.0.56 -Date: 06.07.2025 +Date: 07.07.2025 Changes: - Add german translation (thanks Lucanoria) + Bug Fies: + - Fix incompatibility introduced by Astroponics 1.7.0 --------------------------------------------------------------------------------------------------- Version: 1.0.55 Date: 25.06.2025 diff --git a/lignumis/info.json b/lignumis/info.json index cb3af7f..a45cc7b 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -1,6 +1,6 @@ { "name": "lignumis", - "version": "1.0.55", + "version": "1.0.56", "title": "Lignumis", "description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.", "author": "cackling fiend", From 3703c96b30cf7446697e4106b46edee46b779939 Mon Sep 17 00:00:00 2001 From: Lucanoria Date: Tue, 8 Jul 2025 08:14:14 +0200 Subject: [PATCH 150/150] Updated German Translation The translation has been adapted to the vanilla counterparts and some grammatical errors have been fixed. --- lignumis/locale/de/strings.cfg | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lignumis/locale/de/strings.cfg b/lignumis/locale/de/strings.cfg index 644ec96..cae205f 100644 --- a/lignumis/locale/de/strings.cfg +++ b/lignumis/locale/de/strings.cfg @@ -17,7 +17,7 @@ noise=Lärm noise=__1__ Lärm [entity-name] -wood-lab=Holz Labor +wood-lab=Grundlegendes Forschungslabor aus Holz peat=Torf burner-agricultural-tower=Befeuerter Landwirtschaftsturm burner-assembling-machine=Befeuerte Montagemaschine @@ -26,7 +26,7 @@ lumber-mill=Sägewerk gold-stromatolite=Gold-Stromatolith gold-stromatolite-plant=Gold-Stromatolith-Pflanze gold-stromatolite-lignumis=Gold-Stromatolith -gold-patch=Gold Feld +gold-patch=Goldfeld deep-miner=Tiefenbohrer gold-pipe=Gold-Rohr gold-pipe-to-ground=Unterirdisches Gold-Rohr @@ -37,7 +37,7 @@ provisional-rocket-silo=Provisorisches Raketensilo provisional-rocket-silo-ready=Provisorisches Raketensilo (bereit) basic-gun-turret=Grundlegender Geschützturm basic-construction-robot-gold=Grundlegender Konstruktionsroboter (Gold) -basic-construction-robot-copper=Grundlegender Konstruktionsroboter robot (Kupfer) +basic-construction-robot-copper=Grundlegender Konstruktionsroboter (Kupfer) wood-transport-belt=Hölzernes Fließband wood-underground-belt=Hölzernes Untergrund Fließband wood-splitter=Hölzernes Teilerfließband @@ -52,29 +52,29 @@ lignumis-medium-wriggler-pentapod=Mittelgroßer Lignumis Fünfbein-Zapler [entity-description] lumber-mill=Fortschrittliche Maschine zur Holzbearbeitung. -quality-assembler=High-End- Montagemaschine, die nur die besten Maschinen herstellt. Verleiht 25% zusätzliche Qualität durch den Verbrauch von [item=gold-quality-catalyst]. Die Oberflächenbedingungen und Zutaten bleiben ansonsten unverändert. +quality-assembler=High-End-Montagemaschine, die nur die besten Maschinen herstellt. Verleiht 25% zusätzliche Qualität durch den Verbrauch von [item=gold-quality-catalyst]. Die Oberflächenbedingungen und Zutaten bleiben ansonsten unverändert. gold-stromatolite-plant=Sammle Gold-Stromatolithen für Bakterien, die Gold aus dem Boden anreichern.\n__REMARK_COLOR_BEGIN__Erwarteter Ertrag:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m [equipment-name] -basic-portable-generator-equipment-gold=Grundlegender tragbarer Generatoren (Gold) -basic-portable-generator-equipment-copper=Grundlegender tragbarer Generatoren (Kupfer) -basic-personal-roboport-equipment-gold=Grundlegender persönlicher Roboterhangar (Gold) -basic-personal-roboport-equipment-copper=Grundlegender persönlicher Roboterhangar (Kupfer) +basic-portable-generator-equipment-gold=Grundlegender tragbarer Generator (Gold) +basic-portable-generator-equipment-copper=Grundlegender tragbarer Generator (Kupfer) +basic-personal-roboport-equipment-gold=Grundlegender Persönlicher Roboterhangar (Gold) +basic-personal-roboport-equipment-copper=Grundlegender Persönlicher Roboterhangar (Kupfer) [item-name] wooden-gear-wheel=Holzzahnrad wood-science-pack=Wissenschaftspaket für Holz peat=Torf gold-stromatolite-seed=Gold-Stromatolith-Samen -gold-ore=Gold erz -gold-bacteria=Gold Bakterien -gold-plate=Goldplatten +gold-ore=Golderz +gold-bacteria=Goldbakterien +gold-plate=Goldplatte gold-cable=Goldkabel moist-stromatolite-remnant=Feuchte Stromatolithenreste steam-science-pack=Wissenschaftspaket für Dampf destination-nauvis=Reise nach Nauvis -lumber=Holz -basic-repair-pack=Grundlegendes Reparaturpaket +lumber=Holzbrett +basic-repair-pack=Grundlegendes Reparaturkit cupriavidus-necator=Cupriavidus necator dead-cupriavidus-necator=Tote Cupriavidus necator gold-quality-catalyst=Katalysator in Goldqualität @@ -84,7 +84,7 @@ basic-circuit-board=Grundlegender Schaltkreis crushed-gold-ore=Zerkleinertes Golderz [item-description] -wooden-wall=Verwende Holzwände, um deine Basis vor den Einheimischen zu schützen und den Lärmpegel zu reduzieren. +wooden-wall=Verwende Holzmauern, um deine Basis vor den Einheimischen zu schützen und um den Lärmpegel zu reduzieren. stone-wall=Besserer akustischer und physischer Schutz als sein Gegenstück aus Holz. gold-stromatolite-seed=Pflanze den Samen, um Gold-Stromatolithen wachsen zu lassen. Sie beherbergen Bakterien, die Gold aus dem Boden anreichern.\n__REMARK_COLOR_BEGIN__Expected yield:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m @@ -172,8 +172,8 @@ wood=Holzbrennstoff quality-catalyst=Qualitätskatalysator [mod-setting-name] -lignumis-belt-progression=Progressiven Fließband rezepte Aktivieren -lignumis-inserter-progression=Progressiven Greifarm rezepte Aktivieren +lignumis-belt-progression=Progressive Fließband rezepte aktivieren +lignumis-inserter-progression=Progressive Greifarm rezepte aktivieren lignumis-ammo-progression=Progressive Munitionsrezepte aktivieren lignumis-technology-progression=Progressive Technologien aktivieren lignumis-basic-circuit-board=Grundlegender Schaltkreis aktivieren