From 50f3adb8bc77c4cd652f535e31cf92cb1a626386 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 15 Feb 2025 01:26:54 +0100 Subject: [PATCH] WIP: Add compatibility with Planet Picker --- lignumis/info.json | 1 + lignumis/prototypes/compatibility/data.lua | 3 +- .../compatibility/planet-picker.lua | 8 + lignumis/prototypes/content/technology.lua | 173 +++++------ lignumis/prototypes/integrations/vanilla.lua | 270 +++++++++--------- lignumis/scripts/init-new.lua | 1 + lignumis/scripts/init.lua | 5 +- lignumis/settings.lua | 9 + 8 files changed, 251 insertions(+), 219 deletions(-) create mode 100644 lignumis/prototypes/compatibility/planet-picker.lua diff --git a/lignumis/info.json b/lignumis/info.json index 94f2488..6d8c64f 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -22,6 +22,7 @@ "?wood-military >= 2.3.3", "?metal-and-stars", "?aai-industry", + "?planet-picker", "!apm_power_ldinc", "!wood-logistics", "!early-agriculture", diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index c6832f0..ebf1452 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -1,4 +1,5 @@ require("hot-metals") require("wood-military") require("metal-and-stars") -require("alien-biomes") \ No newline at end of file +require("alien-biomes") +require("planet-picker") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/planet-picker.lua b/lignumis/prototypes/compatibility/planet-picker.lua new file mode 100644 index 0000000..177d14a --- /dev/null +++ b/lignumis/prototypes/compatibility/planet-picker.lua @@ -0,0 +1,8 @@ +local Technology = require("__cf-lib__/data/Technology") +local Recipe = require("__cf-lib__/data/Recipe") + +if not mods["planet-picker"] 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/technology.lua b/lignumis/prototypes/content/technology.lua index a028168..d875637 100644 --- a/lignumis/prototypes/content/technology.lua +++ b/lignumis/prototypes/content/technology.lua @@ -20,90 +20,6 @@ data:extend({ time = 10 } }, - { - 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 - } - }, - prerequisites = { "provisional-rocketry" }, - unit = { - count = 100, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 30 - } - }, - { - 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" }, - unit = { - count = 50, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 15 - } - }, - { - 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" }, - unit = { - count = 50, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 15 - } - }, { type = "technology", name = "gold-fluid-handling", @@ -166,3 +82,92 @@ data:extend({ } } }) + +if not mods["planet-picker"] 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 + } + }, + prerequisites = { "provisional-rocketry" }, + unit = { + count = 100, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 30 + } + }, + { + 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" }, + unit = { + count = 50, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 15 + } + }, + { + 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" }, + unit = { + count = 50, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 15 + } + } + }) +end diff --git a/lignumis/prototypes/integrations/vanilla.lua b/lignumis/prototypes/integrations/vanilla.lua index 7ecd137..d3c89f2 100644 --- a/lignumis/prototypes/integrations/vanilla.lua +++ b/lignumis/prototypes/integrations/vanilla.lua @@ -115,12 +115,14 @@ table.insert(data.raw["assembling-machine"]["assembling-machine-3"].crafting_cat -- Disable vanilla early game recipes -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 +if not mods["planet-picker"] 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 -- Progressive recipes @@ -141,152 +143,154 @@ end -- Adjust vanilla technologies -local automation_science_pack_technology = data.raw.technology["automation-science-pack"] -automation_science_pack_technology.prerequisites = { "planet-discovery-nauvis" } -automation_science_pack_technology.research_trigger = nil -automation_science_pack_technology.unit = { - count = 100, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 30 -} +if not mods["planet-picker"] then + local automation_science_pack_technology = data.raw.technology["automation-science-pack"] + automation_science_pack_technology.prerequisites = { "planet-discovery-nauvis" } + automation_science_pack_technology.research_trigger = nil + automation_science_pack_technology.unit = { + count = 100, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 30 + } -local electronics_technology = data.raw.technology["electronics"] -electronics_technology.prerequisites = { "copper-processing" } -electronics_technology.research_trigger = nil -electronics_technology.unit = { - count = 50, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 15 -} + local electronics_technology = data.raw.technology["electronics"] + electronics_technology.prerequisites = { "copper-processing" } + electronics_technology.research_trigger = nil + electronics_technology.unit = { + count = 50, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 15 + } -local steam_power_technology = data.raw.technology["steam-power"] -steam_power_technology.prerequisites = { "iron-processing" } -steam_power_technology.research_trigger = nil -steam_power_technology.unit = { - count = 50, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - }, - time = 15 -} + local steam_power_technology = data.raw.technology["steam-power"] + steam_power_technology.prerequisites = { "iron-processing" } + steam_power_technology.research_trigger = nil + steam_power_technology.unit = { + count = 50, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + }, + time = 15 + } -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 = { "worker-robots-speed-2", "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 = { "worker-robots-speed-2", "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 = { "physical-projectile-damage-2", "logistic-science-pack" } -physical_damage_technology_3.unit.ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } } -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 = { "physical-projectile-damage-2", "logistic-science-pack" } + physical_damage_technology_3.unit.ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } } + 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 = { "weapon-shooting-speed-2", "logistic-science-pack" } -weapon_speed_technology_3.unit.ingredients = table.deepcopy(physical_damage_technology_3.unit.ingredients) + local weapon_speed_technology_3 = data.raw.technology["weapon-shooting-speed-3"] + weapon_speed_technology_3.prerequisites = { "weapon-shooting-speed-2", "logistic-science-pack" } + weapon_speed_technology_3.unit.ingredients = table.deepcopy(physical_damage_technology_3.unit.ingredients) -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({ "wood-science-pack", "steam-science-pack", "space-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({ "wood-science-pack", "steam-science-pack", "space-science-pack" }) -local utility_science_pack_technology = Technology:new("utility-science-pack") -utility_science_pack_technology:setPrerequisites({ "space-platform-thruster" }) -utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack", "space-science-pack" }) + local utility_science_pack_technology = Technology:new("utility-science-pack") + utility_science_pack_technology:setPrerequisites({ "space-platform-thruster" }) + utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack", "space-science-pack" }) +end if not mods["planet-muluna"] then -- Muluna does the same Technology:new("logistic-robotics"):addRecipe("requester-chest") diff --git a/lignumis/scripts/init-new.lua b/lignumis/scripts/init-new.lua index efe1a07..6a1c98e 100644 --- a/lignumis/scripts/init-new.lua +++ b/lignumis/scripts/init-new.lua @@ -62,6 +62,7 @@ end InitNew.on_init = function() if game.tick > 0 then return end + if script.active_mods["planet-picker"] then return end init_intro() init_space_locations() diff --git a/lignumis/scripts/init.lua b/lignumis/scripts/init.lua index 54e8f15..7f49ab6 100644 --- a/lignumis/scripts/init.lua +++ b/lignumis/scripts/init.lua @@ -37,6 +37,7 @@ end -- Initialize the freeplay scenario local function init_freeplay(event) + if script.active_mods["planet-picker"] then return end if storage.crashed_ship_lignumis then return end local player = game.get_player(event.player_index) @@ -63,7 +64,9 @@ local function init_freeplay(event) table.deepcopy(storage.crashed_ship_parts)) util.remove_safe(player, storage.crashed_ship_items) util.remove_safe(player, storage.crashed_debris_items) - player.character.get_main_inventory().sort_and_merge() + if player.character then + player.character.get_main_inventory().sort_and_merge() + end storage.crash_site_cutscene_active = true crash_site.create_cutscene(player, { -5, -4 }) diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 0b6c951..eec5c3d 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -30,4 +30,13 @@ end 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"] 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 \ No newline at end of file