diff --git a/SeaBlock/changelog.txt b/SeaBlock/changelog.txt index 4114be6..154f856 100644 --- a/SeaBlock/changelog.txt +++ b/SeaBlock/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 0.5.13 +Date: 14.07.2023 + Changes: + - Milestones mod compatibility #292 +--------------------------------------------------------------------------------------------------- Version: 0.5.12 Date: 01.01.2023 Changes: diff --git a/SeaBlock/data-final-fixes/mapgen.lua b/SeaBlock/data-final-fixes/mapgen.lua index f7ad3c9..7f1cc52 100644 --- a/SeaBlock/data-final-fixes/mapgen.lua +++ b/SeaBlock/data-final-fixes/mapgen.lua @@ -1,55 +1,117 @@ --- No resource placement -for k, v in pairs(data.raw.resource) do - v.autoplace = nil -end - --- No spawners -for k, v in pairs(data.raw["unit-spawner"]) do - v.autoplace = nil - v.control = nil -end - --- No trees -for k, v in pairs(data.raw.tree) do - if - k ~= "temperate-garden" - and k ~= "desert-garden" - and k ~= "swamp-garden" - and k ~= "temperate-tree" - and k ~= "desert-tree" - and k ~= "swamp-tree" - and k ~= "puffer-nest" - then +--header + +--Resource Control +if settings.startup["No-minerals-mode-setting"].value == true then + --No Resource placement execpt deep oil from cargo ships + if settings.startup["Cargo-ships-deep-oil-setting"].value == true then + for k, v in pairs(data.raw.resource) do + if k ~= "deep_oil" then + v.autoplace = nil + end + end + else -- No resource placement + for k, v in pairs(data.raw.resource) do + v.autoplace = nil + end + end +end + +if settings.startup["No-trees-mode-setting"].value == true then + -- No trees + for k, v in pairs(data.raw.tree) do + if + k ~= "temperate-garden" + and k ~= "desert-garden" + and k ~= "swamp-garden" + and k ~= "temperate-tree" + and k ~= "desert-tree" + and k ~= "swamp-tree" + and k ~= "puffer-nest" + then + v.autoplace = nil + seablock.lib.add_flag("tree", v.name, "not-deconstructable") + end + end + + -- No rocks + for k, v in pairs(data.raw["simple-entity"]) do + v.autoplace = nil + seablock.lib.add_flag("simple-entity", v.name, "not-deconstructable") + end +end + +if settings.startup["Landblock-mode-Seablock-setting"].value == false then + -- No spawners + for k, v in pairs(data.raw["unit-spawner"]) do v.autoplace = nil - seablock.lib.add_flag("tree", v.name, "not-deconstructable") + v.control = nil end end --- No rocks -for k, v in pairs(data.raw["simple-entity"]) do - v.autoplace = nil - seablock.lib.add_flag("simple-entity", v.name, "not-deconstructable") -end +--if settings.startup["Landblock-mode-Seablock-setting"].value == true then + +--else local keepcontrols = {} local turrets = data.raw["turret"] for turret_name, turret in pairs(turrets) do +if turret.autoplace and turret.autoplace.control then + keepcontrols[turret.autoplace.control] = true +end +end + +if settings.startup["Landblock-mode-Seablock-setting"].value == true then +local enem = data.raw["unit-spawner"] +for enemies_name, turret in pairs(enem) do +if turret.autoplace and turret.autoplace.control then + keepcontrols[turret.autoplace.control] = true +end +end + +keepcontrols["angels-biter-slider"] = true + +end + +if settings.startup["No-minerals-mode-setting"].value == false then +local resources = data.raw["resource"] +for resource_name, turret in pairs(resources) do + if turret.autoplace and turret.autoplace.control then + keepcontrols[turret.autoplace.control] = true + end +end +end + +if settings.startup["No-trees-mode-setting"].value == false then +local trees = data.raw["tree"] +for tree_name, turret in pairs(trees) do if turret.autoplace and turret.autoplace.control then - keepcontrols[turret.autoplace.control] = true + keepcontrols[turret.autoplace.control] = true end end +local trees = data.raw["simple-entity"] +for tree_name, turret in pairs(trees) do + if turret.autoplace and turret.autoplace.control then + keepcontrols[turret.autoplace.control] = true + end +end + +end + local controls = data.raw["autoplace-control"] +--if settings.startup["No-minerals-mode-setting"].value == true then +--if settings.startup["No-trees-mode-setting"].value == true then for k, v in pairs(controls) do if k ~= "enemy-base" and not keepcontrols[k] then - controls[k] = nil + controls[k] = nil end end + local presets = data.raw["map-gen-presets"]["default"] for k, v in pairs(presets) do -- Check for order as this is a manditory property for a MapGenPreset (so we skip type and name) if k ~= "default" and k ~= "marathon" and v.order then data.raw["map-gen-presets"]["default"][k] = nil end -end +end \ No newline at end of file diff --git a/SeaBlock/data-final-fixes/unobtainable_items.lua b/SeaBlock/data-final-fixes/unobtainable_items.lua index 41cee79..8607ef3 100644 --- a/SeaBlock/data-final-fixes/unobtainable_items.lua +++ b/SeaBlock/data-final-fixes/unobtainable_items.lua @@ -40,7 +40,7 @@ end -- Recipes to unconditionally remove local removerecipes = {} -for _, v in ipairs({ +local recipes_to_remove = { "alien-artifact-blue-from-basic", "alien-artifact-green-from-basic", "alien-artifact-orange-from-basic", @@ -94,14 +94,113 @@ for _, v in ipairs({ "thermal-water-filtering-2", "water-thermal-lithia", "wood-charcoal", -}) do +} +--[[ +if settings.startup["No-minerals-mode-setting"].value == false then +recipes_to_remove = { + "alien-artifact-blue-from-basic", + "alien-artifact-green-from-basic", + "alien-artifact-orange-from-basic", + "alien-artifact-purple-from-basic", + "alien-artifact-red-from-basic", + "alien-artifact-yellow-from-basic", + "angels-chemical-void-gas-natural-1", + "angels-chemical-void-liquid-condensates", + "angels-water-void-crystal-matrix", + "angels-water-void-lithia-water", + "angelsore1-crushed-hand", + "angelsore3-crushed-hand", + "big-burner-generator", + "bio-tile", + "bob-coal-from-wood", + "bob-resin-wood", + "burner-generator", +-- "burner-mining-drill", + "carbon-from-charcoal", + "coal-cracking-1", + "coal-cracking-2", + "coal-cracking-3", +-- "coal-crushed", + "condensates-oil-refining", + "condensates-refining", + "diesel-fuel", +-- "electric-mining-drill", + "empty-crystal-matrix-barrel", + "empty-diesel-fuel-barrel", + "empty-gas-natural-1-barrel", + "empty-liquid-condensates-barrel", + "empty-lithia-water-barrel", + "fill-crystal-matrix-barrel", + "fill-diesel-fuel-barrel", + "fill-gas-natural-1-barrel", + "fill-liquid-condensates-barrel", + "fill-lithia-water-barrel", + "gas-fractioning-condensates", + "gas-phosgene", + "gas-separation", + "oil-steam-boiler", + "petroleum-generator", + "protection-field-goopless", +-- "pumpjack", + "slag-processing-7", + "slag-processing-8", + "slag-processing-9", +-- "solid-coke", + "solid-coke-sulfur", + "thermal-water-filtering-1", + "thermal-water-filtering-2", + "water-thermal-lithia", + "wood-charcoal", +} +end +--]] + +if settings.startup["Cargo-ships-deep-oil-setting"].value == true then + --remove pumpjack from recipes_to_remove + for k, v in ipairs(recipes_to_remove) do + if v == "pumpjack" then + table.remove(recipes_to_remove, k) + end + end +elseif settings.startup["No-minerals-mode-setting"].value == false then + --[[ + remove: + "burner-mining-drill", + "coal-crushed", + "electric-mining-drill", + "pumpjack", + "solid-coke", + --]] + for k, v in ipairs(recipes_to_remove) do + if v == "pumpjack" then + table.remove(recipes_to_remove, k) + + elseif v == "burner-mining-drill" then + table.remove(recipes_to_remove, k) + + elseif v == "coal-crushed" then + table.remove(recipes_to_remove, k) + + elseif v == "electric-mining-drill" then + table.remove(recipes_to_remove, k) + + elseif v == "solid-coke" then + table.remove(recipes_to_remove, k) + else + end + end +else +end + + +for _, v in ipairs(recipes_to_remove) do removerecipes[v] = true end -- Items to remove. Recipes are checked to ensure these can't be crafted, -- then any recipe that uses an unobtainable item is removed local unobtainable = {} -for _, v in ipairs({ +local items_to_remove = { "big-burner-generator", "bio-tile", "burner-generator", @@ -122,10 +221,64 @@ for _, v in ipairs({ "oil-steam-boiler", "petroleum-generator", "pumpjack", -}) do - unobtainable[v] = {} +} +if settings.startup["No-minerals-mode-setting"].value == false then +items_to_remove = { + "big-burner-generator", + "bio-tile", + "burner-generator", +-- "burner-mining-drill", +-- "coal", +-- "coal-crushed", + "diesel-fuel", + "diesel-fuel-barrel", +-- "electric-mining-drill", + "gas-natural-1", + "gas-natural-1-barrel", + "gas-phosgene", + "gas-phosgene-barrel", + "liquid-condensates", + "liquid-condensates-barrel", + "lithia-water", + "lithia-water-barrel", + "oil-steam-boiler", + "petroleum-generator", + "pumpjack", +} end +if settings.startup["Cargo-ships-deep-oil-setting"].value == true then + --remove pumpjack from recipes_to_remove + for k, v in ipairs(items_to_remove) do + if v == "pumpjack" then + table.remove(recipes_to_remove, k) + end + end +end + +for _, v in ipairs(items_to_remove) do + unobtainable[v] = {} +end +--[[ +if settings.startup["No-minerals-mode-setting"].value == false then + for _, v in ipairs({ + "burner-mining-drill", + "coal-crushed", + "electric-mining-drill" + }) do + removerecipes[v] = false + end + + for _, v in ipairs({ + "burner-mining-drill", + "coal", + "coal-crushed", + "electric-mining-drill" + }) do + unobtainable[v] = nil + end +end +--]] -- unobtainable[key] -> { { a, and b, and .. }, or { c, ... } or, { d, and e, and f, ...}... } -- a,b,c... are items which if craftable imply key is also craftable and should not be removed local recipes = {} diff --git a/SeaBlock/data-updates.lua b/SeaBlock/data-updates.lua index 82cd90c..3879ae5 100644 --- a/SeaBlock/data-updates.lua +++ b/SeaBlock/data-updates.lua @@ -16,3 +16,4 @@ require("data-updates/thermal-extractor") require("data-updates/wood") require("data-updates/startup") require("data-updates/landfill") +require("data-updates/mapgen") diff --git a/SeaBlock/data-updates/coal.lua b/SeaBlock/data-updates/coal.lua index bd5e160..ef24f8c 100644 --- a/SeaBlock/data-updates/coal.lua +++ b/SeaBlock/data-updates/coal.lua @@ -24,9 +24,11 @@ seablock.lib.moveeffect("pellet-coke", "angels-coal-cracking", "angels-coal-proc data.raw.item["carbon"].fuel_emissions_multiplier = nil data.raw.item["carbon"].fuel_value = nil data.raw.item["carbon"].fuel_category = nil -data.raw.item["coal"].fuel_emissions_multiplier = nil -data.raw.item["coal"].fuel_value = nil -data.raw.item["coal"].fuel_category = nil +if settings.startup["No-minerals-mode-setting"].value == true then + data.raw.item["coal"].fuel_emissions_multiplier = nil + data.raw.item["coal"].fuel_value = nil + data.raw.item["coal"].fuel_category = nil +end data.raw.item["coal-crushed"].fuel_value = nil data.raw.item["coal-crushed"].fuel_category = nil diff --git a/SeaBlock/data-updates/mapgen.lua b/SeaBlock/data-updates/mapgen.lua new file mode 100644 index 0000000..c7eda43 --- /dev/null +++ b/SeaBlock/data-updates/mapgen.lua @@ -0,0 +1,23 @@ +-- Remove resources so mining recipes don't show in FNEI +-- Have to leave at least one resource or game will not load +if settings.startup["No-minerals-mode-setting"].value == true then + if settings.startup["Cargo-ships-deep-oil-setting"].value == true then + for k, v in pairs(data.raw["resource"]) do + if k == "deep_oil" or k == "deep-oil" then + --v.minable.result = nil + --v.minable.results = nil + else + data.raw["resource"][k] = nil + end + end + else + for k, v in pairs(data.raw["resource"]) do + if k == "coal" then + v.minable.result = nil + v.minable.results = nil + else + data.raw["resource"][k] = nil + end + end + end +end \ No newline at end of file diff --git a/SeaBlock/data-updates/misc.lua b/SeaBlock/data-updates/misc.lua index fd2bdbe..2cb8e39 100644 --- a/SeaBlock/data-updates/misc.lua +++ b/SeaBlock/data-updates/misc.lua @@ -61,17 +61,6 @@ if not seablock.trigger.mining_productivity then end end --- Remove resources so mining recipes don't show in FNEI --- Have to leave at least one resource or game will not load -for k, v in pairs(data.raw["resource"]) do - if k == "coal" then - v.minable.result = nil - v.minable.results = nil - else - data.raw["resource"][k] = nil - end -end - -- Add prerequisite for Tin and Lead if settings.startup["bobmods-logistics-beltoverhaul"].value then bobmods.lib.tech.add_prerequisite("logistics", "ore-crushing") @@ -112,9 +101,11 @@ bobmods.lib.tech.remove_prerequisite("tungsten-processing", "angels-nickel-smelt bobmods.lib.tech.remove_recipe_unlock("bio-arboretum-swamp-1", "solid-plastic") seablock.lib.hide("inserter", "steam-inserter") +if settings.startup["No-minerals-mode-setting"].value == true then seablock.lib.hide("mining-drill", "burner-mining-drill") seablock.lib.hide("mining-drill", "electric-mining-drill") seablock.lib.hide("mining-drill", "pumpjack") +end seablock.lib.hide("storage-tank", "bob-overflow-valve") seablock.lib.hide("storage-tank", "bob-valve") seablock.lib.hide("storage-tank", "bob-topup-valve") @@ -209,9 +200,10 @@ if mods["bobrevamp"] and not mods["bobclasses"] then bobmods.lib.tech.add_prerequisite("rtg", "production-science-pack") bobmods.lib.tech.add_prerequisite("rtg", "utility-science-pack") end - -if mods["cargo-ships"] then - seablock.lib.hide_item("oil_rig") +if settings.startup["Cargo-ships-deep-oil-setting"].value == false then + if mods["cargo-ships"] then + seablock.lib.hide_item("oil_rig") + end end -- Swap gold for platinum diff --git a/SeaBlock/info.json b/SeaBlock/info.json index 3799e69..5bf9241 100644 --- a/SeaBlock/info.json +++ b/SeaBlock/info.json @@ -1,6 +1,6 @@ { "name": "SeaBlock", - "version": "0.5.12", + "version": "0.5.13", "factorio_version": "1.1", "title": "Sea Block", "author": "Trainwreck", @@ -30,10 +30,12 @@ "? bobrevamp", "? bobtech", "? bobwarfare", + "? cargo-ships", "? CircuitProcessing", "? Explosive Excavation", "? KS_Power", "? LandfillPainting >= 0.5.2", + "? Milestones >= 1.3.19", "? ScienceCostTweakerM >= 1.1.10", "? SpaceMod >= 1.1.1", diff --git a/SeaBlock/locale/en/SeaBlock.cfg b/SeaBlock/locale/en/SeaBlock.cfg index 215613c..57a4f21 100644 --- a/SeaBlock/locale/en/SeaBlock.cfg +++ b/SeaBlock/locale/en/SeaBlock.cfg @@ -61,6 +61,16 @@ sb-lab-tool=Craft a lab to complete this research [mod-setting-name] sb-default-landfill=Default landfill type bobmods-assembly-multipurposefurnaces=Recipe furnaces +Landblock-mode-Seablock-setting=Landblock mode +No-minerals-mode-setting=No Minerals mode +Cargo-ships-deep-oil-setting=Cargo Ships Deep Oil Setting +No-trees-mode-setting=No Tree/Rock mode + +[mod-setting-description] +Landblock-mode-Seablock-setting=Reverts changes to mapgen back to vanilla mapgen (Default=unchecked) +No-minerals-mode-setting=Turns on normal resource production for mod incompatabilities (Default=checked) +Cargo-ships-deep-oil-setting=Turns on Cargo Ships Deep Oil (Default=unchecked) +No-trees-mode-setting=Turns on normal tree/rock growth for mod incompatabilities (Default=checked) [string-mod-setting] sb-default-landfill-landfill-dirt-4=[img=item/landfill-dirt-4]Dirt diff --git a/SeaBlock/mapgen.lua b/SeaBlock/mapgen.lua index e3cafab..fc963e0 100644 --- a/SeaBlock/mapgen.lua +++ b/SeaBlock/mapgen.lua @@ -31,103 +31,151 @@ data.raw.tile["sand-5"].vehicle_friction_modifier = 1.8 data.raw.tile["landfill"].vehicle_friction_modifier = 1.8 -for _, v in pairs(data.raw.tile) do - v.autoplace = nil -end - --- Want player to collide with cliffs --- Want player to collide with water --- Don't want cliffs to collide with water --- Water tile's default collision mask includes player-layer and item-layer --- So use train-layer as a substitute player-layer -data.raw.cliff["cliff"].collision_mask = { "object-layer", "train-layer", "not-colliding-with-itself" } local octaves = -3 local persistence = 0.2 local waterline = 9.4 local elevation_scale = 5 + +if settings.startup["Landblock-mode-Seablock-setting"].value == true then +octaves = -3 +persistence = 0.2 +waterline = 1 +elevation_scale = 1 +end + + local function scale_elevation(x) return (x - waterline) * elevation_scale + waterline end --- low lying sand -data.raw.tile["sand-4"].autoplace = { - peaks = { - { -- Around cliff islands - influence = 5, - elevation_optimal = 0.3 * elevation_scale + waterline, - elevation_range = 0.3 * elevation_scale, - elevation_max_range = 0.3 * elevation_scale, - }, - { - influence = 0.77 * 8, -- Worm islands - min_influence = 0, - noise_layer = "enemy-base", - noise_octaves_difference = octaves, - noise_persistence = persistence, - tier_from_start_optimal = 8, - tier_from_start_max_range = 40, - tier_from_start_top_property_limit = 8, - }, - { -- Not in starting area - influence = -5, - starting_area_weight_optimal = 1, - starting_area_weight_range = 0, - starting_area_weight_max_range = 0, - }, - { - influence = 100, -- ... except for starting tile - min_influence = 0, - distance_optimal = 0, - distance_range = 0.1, - distance_max_range = 0.1, - }, - { - influence = -5, - }, - }, -} --- highground sand -data.raw.tile["sand-5"].autoplace = { - peaks = { - { - influence = 5, - min_influence = 0, - elevation_optimal = scale_elevation(15), - elevation_range = 5 * elevation_scale, - elevation_max_range = 5 * elevation_scale, - tier_from_start_optimal = 0.1, - tier_from_start_range = 0, - tier_from_start_max_range = 0, - tier_from_start_top_property_limit = 0.1, - }, - { - influence = 0.65, -- starting area garden islands - min_influence = 0, - max_influence = 1, - noise_layer = "enemy-base", - noise_octaves_difference = octaves, - noise_persistence = persistence, - tier_from_start_optimal = 0, - tier_from_start_range = 0.1, - tier_from_start_max_range = 0.1, - }, - { - influence = 1, - max_influence = 0, - starting_area_weight_optimal = 1, - starting_area_weight_range = 0, - starting_area_weight_max_range = 0, - }, - { - influence = -100, -- not on starting tile - max_influence = 0, - distance_optimal = 0, - distance_range = 3, - distance_max_range = 3, - }, - }, -} +if settings.startup["Landblock-mode-Seablock-setting"].value == false then + for k, v in pairs(data.raw.tile) do + v.autoplace = nil + end + + -- Want player to collide with cliffs + -- Want player to collide with water + -- Don't want cliffs to collide with water + -- Water tile's default collision mask includes player-layer and item-layer + -- So use train-layer as a substitute player-layer + data.raw.cliff["cliff"].collision_mask = { "object-layer", "train-layer", "not-colliding-with-itself" } + + -- low lying sand + data.raw.tile["sand-4"].autoplace = { + peaks = { + { -- Around cliff islands + influence = 5, + elevation_optimal = 0.3 * elevation_scale + waterline, + elevation_range = 0.3 * elevation_scale, + elevation_max_range = 0.3 * elevation_scale, + }, + { + influence = 0.77 * 8, -- Worm islands + min_influence = 0, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + tier_from_start_optimal = 8, + tier_from_start_max_range = 40, + tier_from_start_top_property_limit = 8, + }, + { -- Not in starting area + influence = -5, + starting_area_weight_optimal = 1, + starting_area_weight_range = 0, + starting_area_weight_max_range = 0, + }, + { + influence = 100, -- ... except for starting tile + min_influence = 0, + distance_optimal = 0, + distance_range = 0.1, + distance_max_range = 0.1, + }, + { + influence = -5, + }, + }, + } + + -- highground sand + data.raw.tile["sand-5"].autoplace = { + peaks = { + { + influence = 5, + min_influence = 0, + elevation_optimal = scale_elevation(15), + elevation_range = 5 * elevation_scale, + elevation_max_range = 5 * elevation_scale, + tier_from_start_optimal = 0.1, + tier_from_start_range = 0, + tier_from_start_max_range = 0, + tier_from_start_top_property_limit = 0.1, + }, + { + influence = 0.65, -- starting area garden islands + min_influence = 0, + max_influence = 1, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + tier_from_start_optimal = 0, + tier_from_start_range = 0.1, + tier_from_start_max_range = 0.1, + }, + { + influence = 1, + max_influence = 0, + starting_area_weight_optimal = 1, + starting_area_weight_range = 0, + starting_area_weight_max_range = 0, + }, + { + influence = -100, -- not on starting tile + max_influence = 0, + distance_optimal = 0, + distance_range = 3, + distance_max_range = 3, + }, + }, + } + + data.raw.tile["water"].autoplace = { + peaks = { + { + influence = 0.1, -- shallow water around cliff islands + min_influence = 0, + elevation_optimal = -2 * elevation_scale + waterline, + elevation_range = 2.5 * elevation_scale, + elevation_max_range = 2.5 * elevation_scale, + }, + { + influence = 0.77 * 2, -- around worm islands + min_influence = 0, + max_influence = 1, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + }, + { + influence = 5, -- around starting tile + min_influence = 0, + distance_optimal = 0, + distance_range = 5, + distance_max_range = 5, + }, + }, + } + + data.raw.tile["deepwater"].autoplace = { + peaks = { + { + influence = 0.01, + }, + }, + } +end local plant_elevation_range = 9.9 * elevation_scale data.raw.tree["desert-garden"].autoplace = { @@ -135,31 +183,31 @@ data.raw.tree["desert-garden"].autoplace = { random_probability_penalty = 0.05, sharpness = 1, peaks = { - { - influence = 1, - min_influence = 0, - elevation_optimal = scale_elevation(20), - elevation_range = plant_elevation_range, - elevation_max_range = plant_elevation_range, - }, - { - influence = 0.31, -- Trial and error value to generate size that approximately matches starting area islands - min_influence = 0, - max_influence = 1, - noise_layer = "enemy-base", - noise_octaves_difference = octaves, - noise_persistence = persistence, - tier_from_start_optimal = 0, - tier_from_start_range = 0.1, - tier_from_start_max_range = 0.1, - }, - { - influence = 1, - max_influence = 0, - noise_layer = "desert-garden-noise", - noise_persistence = 0.8, - noise_octaves_difference = -0.5, - }, + { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(20), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, + { + influence = 0.31, -- Trial and error value to generate size that approximately matches starting area islands + min_influence = 0, + max_influence = 1, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + tier_from_start_optimal = 0, + tier_from_start_range = 0.1, + tier_from_start_max_range = 0.1, + }, + { + influence = 1, + max_influence = 0, + noise_layer = "desert-garden-noise", + noise_persistence = 0.8, + noise_octaves_difference = -0.5, + }, }, order = "yc", tile_restriction = { "sand-5" }, @@ -169,20 +217,20 @@ data.raw.tree["temperate-garden"].autoplace = { max_probability = 0.2, random_probability_penalty = 0.05, peaks = { - { - influence = 1, - min_influence = 0, - elevation_optimal = scale_elevation(20), - elevation_range = plant_elevation_range, - elevation_max_range = plant_elevation_range, - }, - { - influence = 1, - max_influence = 0, - noise_layer = "temperate-garden-noise", - noise_persistence = 0.8, - noise_octaves_difference = -0.5, - }, + { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(20), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, + { + influence = 1, + max_influence = 0, + noise_layer = "temperate-garden-noise", + noise_persistence = 0.8, + noise_octaves_difference = -0.5, + }, }, order = "ya", tile_restriction = { "sand-5" }, @@ -191,13 +239,13 @@ data.raw.tree["temperate-garden"].autoplace = { data.raw.tree["swamp-garden"].autoplace = { max_probability = 0.05, peaks = { - { - influence = 1, - min_influence = 0, - elevation_optimal = scale_elevation(20), - elevation_range = plant_elevation_range, - elevation_max_range = plant_elevation_range, - }, + { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(20), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, }, order = "yb", tile_restriction = { "sand-5" }, @@ -208,31 +256,31 @@ data.raw.tree["desert-tree"].autoplace = { random_probability_penalty = 0.025, sharpness = 1, peaks = { - { - influence = 1, - min_influence = 0, - elevation_optimal = scale_elevation(20), - elevation_range = plant_elevation_range, - elevation_max_range = plant_elevation_range, - }, - { - influence = 0.31, -- Trial and error value to generate size that approximately matches starting area islands - min_influence = 0, - max_influence = 1, - noise_layer = "enemy-base", - noise_octaves_difference = octaves, - noise_persistence = persistence, - tier_from_start_optimal = 0, - tier_from_start_range = 0.1, - tier_from_start_max_range = 0.1, - }, - { - influence = 1, - max_influence = 0, - noise_layer = "desert-tree-noise", - noise_persistence = 0.8, - noise_octaves_difference = -0.5, - }, + { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(20), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, + { + influence = 0.31, -- Trial and error value to generate size that approximately matches starting area islands + min_influence = 0, + max_influence = 1, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + tier_from_start_optimal = 0, + tier_from_start_range = 0.1, + tier_from_start_max_range = 0.1, + }, + { + influence = 1, + max_influence = 0, + noise_layer = "desert-tree-noise", + noise_persistence = 0.8, + noise_octaves_difference = -0.5, + }, }, order = "za", tile_restriction = { "sand-5" }, @@ -241,20 +289,20 @@ data.raw.tree["temperate-tree"].autoplace = { max_probability = 0.1, random_probability_penalty = 0.025, peaks = { - { - influence = 1, - min_influence = 0, - elevation_optimal = scale_elevation(20), - elevation_range = plant_elevation_range, - elevation_max_range = plant_elevation_range, - }, - { - influence = 1, - max_influence = 0, - noise_layer = "temperate-tree-noise", - noise_persistence = 0.8, - noise_octaves_difference = -0.5, - }, + { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(20), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, + { + influence = 1, + max_influence = 0, + noise_layer = "temperate-tree-noise", + noise_persistence = 0.8, + noise_octaves_difference = -0.5, + }, }, order = "zc", tile_restriction = { "sand-5" }, @@ -263,106 +311,241 @@ data.raw.tree["temperate-tree"].autoplace = { data.raw.tree["swamp-tree"].autoplace = { max_probability = 0.05, peaks = { - { - influence = 1, - min_influence = 0, - elevation_optimal = scale_elevation(20), - elevation_range = plant_elevation_range, - elevation_max_range = plant_elevation_range, - }, - { - influence = 1, - max_influence = 0, - noise_layer = "swamp-tree-noise", - noise_persistence = 0.8, - noise_octaves_difference = -0.5, - }, + { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(20), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, + { + influence = 1, + max_influence = 0, + noise_layer = "swamp-tree-noise", + noise_persistence = 0.8, + noise_octaves_difference = -0.5, + }, }, order = "zb", tile_restriction = { "sand-5" }, } -data.raw.tile["water"].autoplace = { + +if settings.startup["Landblock-mode-Seablock-setting"].value == true then +plant_elevation_range = 10 * elevation_scale +local elevation_number = 1 +local max_probability_val = 0.2 +data.raw.tree["desert-garden"].autoplace = { + max_probability = max_probability_val, + random_probability_penalty = 0.05, + sharpness = 1, + peaks = { +--[[ { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(elevation_number), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, --]] +--[[ { + influence = 0.31, -- Trial and error value to generate size that approximately matches starting area islands + min_influence = 0, + max_influence = 1, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + tier_from_start_optimal = 0, + tier_from_start_range = 0.1, + tier_from_start_max_range = 0.1, + }, --]] + { + influence = 1, + max_influence = 0.003, + noise_layer = "desert-garden-noise", + noise_persistence = 0.5, + noise_octaves_difference = -0.1, -- -0.5, + }, + }, + order = "yc", +-- tile_restriction = { "sand-5" }, +} + +data.raw.tree["temperate-garden"].autoplace = { + max_probability = 0.2, + random_probability_penalty = 0.05, + peaks = { +--[[ { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(elevation_number), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, --]] + { + influence = 1, + max_influence = 0.003, + noise_layer = "temperate-garden-noise", + noise_persistence = 0.5, + noise_octaves_difference = -0.1, -- -0.5, + }, + }, + order = "ya", +-- tile_restriction = { "sand-5" }, +} + +data.raw.tree["swamp-garden"].autoplace = { + max_probability = 0.05, peaks = { - { - influence = 0.1, -- shallow water around cliff islands - min_influence = 0, - elevation_optimal = -2 * elevation_scale + waterline, - elevation_range = 2.5 * elevation_scale, - elevation_max_range = 2.5 * elevation_scale, - }, - { - influence = 0.77 * 2, -- around worm islands - min_influence = 0, - max_influence = 1, - noise_layer = "enemy-base", - noise_octaves_difference = octaves, - noise_persistence = persistence, - }, - { - influence = 5, -- around starting tile - min_influence = 0, - distance_optimal = 0, - distance_range = 5, - distance_max_range = 5, - }, +--[[ { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(elevation_number), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + },--]] + { + influence = 1, + max_influence = 0.003, + noise_layer = "swamp-garden-noise", + noise_persistence = 0.5, + noise_octaves_difference = -0.1, -- -0.5, + }, }, + order = "yb", +-- tile_restriction = { "sand-5" }, } -data.raw.tile["deepwater"].autoplace = { +data.raw.tree["desert-tree"].autoplace = { + max_probability = 0.1, + random_probability_penalty = 0.025, + sharpness = 1, peaks = { - { - influence = 0.01, - }, +--[[ { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(elevation_number), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, --]] +--[[ { + influence = 0.31, -- Trial and error value to generate size that approximately matches starting area islands + min_influence = 0, + max_influence = 1, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + tier_from_start_optimal = 0, + tier_from_start_range = 0.1, + tier_from_start_max_range = 0.1, + }, --]] + { + influence = 1, + max_influence = 0.003, + noise_layer = "desert-tree-noise", + noise_persistence = 0.5, + noise_octaves_difference = -0.1, -- -0.5, + }, }, + order = "za", +-- tile_restriction = { "sand-5" }, +} +data.raw.tree["temperate-tree"].autoplace = { + max_probability = 0.1, + random_probability_penalty = 0.025, + peaks = { +--[[ { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(elevation_number), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, --]] + { + influence = 1, + max_influence = 0.003, + noise_layer = "temperate-tree-noise", + noise_persistence = 0.5, + noise_octaves_difference = -0.1, -- -0.5, + }, + }, + order = "zc", +-- tile_restriction = { "sand-5" }, } +data.raw.tree["swamp-tree"].autoplace = { + max_probability = 0.05, + peaks = { +--[[ { + influence = 1, + min_influence = 0, + elevation_optimal = scale_elevation(elevation_number), + elevation_range = plant_elevation_range, + elevation_max_range = plant_elevation_range, + }, --]] + { + influence = 1, + max_influence = 0.003, + noise_layer = "swamp-tree-noise", + noise_persistence = 0.5, + noise_octaves_difference = -0.1, -- -0.5, + }, + }, + order = "zb", +-- tile_restriction = { "sand-5" }, +} + +end + + + data.raw.fish["alien-fish-1"].autoplace = { peaks = { - { - influence = -0.1, - max_influence = 0, - noise_layer = "enemy-base", - noise_octaves_difference = octaves, - noise_persistence = persistence, - }, - { - influence = 0.01, - }, + { + influence = -0.1, + max_influence = 0, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + }, + { + influence = 0.01, + }, }, } data.raw.fish["alien-fish-2"].autoplace = { peaks = { - { - influence = 0.02, - min_influence = 0, - noise_layer = "enemy-base", - noise_octaves_difference = octaves, - noise_persistence = persistence, - }, + { + influence = 0.02, + min_influence = 0, + noise_layer = "enemy-base", + noise_octaves_difference = octaves, + noise_persistence = persistence, + }, }, } data.raw.fish["alien-fish-3"].autoplace = { peaks = { - { - influence = 0.015, - min_influence = 0, - elevation_optimal = scale_elevation(10), - elevation_range = 5 * elevation_scale, - elevation_max_range = 5 * elevation_scale, - tier_from_start_optimal = 0.1, - tier_from_start_range = 0, - tier_from_start_max_range = 0, - tier_from_start_top_property_limit = 0.1, - }, + { + influence = 0.015, + min_influence = 0, + elevation_optimal = scale_elevation(10), + elevation_range = 5 * elevation_scale, + elevation_max_range = 5 * elevation_scale, + tier_from_start_optimal = 0.1, + tier_from_start_range = 0, + tier_from_start_max_range = 0, + tier_from_start_top_property_limit = 0.1, + }, }, } local noise = require("noise") local tne = noise.to_noise_expression local enemy_random_seed = 1 + +if settings.startup["Landblock-mode-Seablock-setting"].value == false then local function new_random_seed() enemy_random_seed = enemy_random_seed + 1 return enemy_random_seed @@ -371,20 +554,20 @@ local function worm_autoplace(distance, probability, order, falloff, control_nam local d = noise.var("distance") - noise.var("starting_area_radius") local p = noise.clamp((d - distance * 128) / 128, 0, 1) if falloff then - p = p * noise.clamp(((distance + 2) * 128 - d) / 128, 0, 1) + p = p * noise.clamp(((distance + 2) * 128 - d) / 128, 0, 1) end p = p * noise.clamp((waterline - noise.var("elevation")), 0, 1) p = p * probability p = noise.random_penalty(p, probability * 0.5, { - x = noise.var("x") + new_random_seed(), + x = noise.var("x") + new_random_seed(), }) return { - control = control_name, - order = order, - force = "enemy", - probability_expression = p, - richness_expression = tne(1), + control = control_name, + order = order, + force = "enemy", + probability_expression = p, + richness_expression = tne(1), } end @@ -420,30 +603,32 @@ for _, v in pairs(data.raw.turret) do v.map_generator_bounding_box = nil end +end + data:extend({ { - type = "noise-layer", - name = "desert-tree-noise", + type = "noise-layer", + name = "desert-tree-noise", }, { - type = "noise-layer", - name = "temperate-tree-noise", + type = "noise-layer", + name = "temperate-tree-noise", }, { - type = "noise-layer", - name = "swamp-tree-noise", + type = "noise-layer", + name = "swamp-tree-noise", }, { - type = "noise-layer", - name = "desert-garden-noise", + type = "noise-layer", + name = "desert-garden-noise", }, { - type = "noise-layer", - name = "temperate-garden-noise", + type = "noise-layer", + name = "temperate-garden-noise", }, { - type = "noise-layer", - name = "swamp-garden-noise", + type = "noise-layer", + name = "swamp-garden-noise", }, }) @@ -451,30 +636,38 @@ local function make_basis_noise_function(seed0, seed1, outscale0, inscale0) outscale0 = outscale0 or 1 inscale0 = inscale0 or 1 / outscale0 return function(x, y, inscale, outscale) - return tne({ - type = "function-application", - function_name = "factorio-basis-noise", - arguments = { - x = tne(x), - y = tne(y), - seed0 = tne(seed0), - seed1 = tne(seed1), - input_scale = tne((inscale or 1) * inscale0), - output_scale = tne((outscale or 1) * outscale0), - }, - }) + return tne({ + type = "function-application", + function_name = "factorio-basis-noise", + arguments = { + x = tne(x), + y = tne(y), + seed0 = tne(seed0), + seed1 = tne(seed1), + input_scale = tne((inscale or 1) * inscale0), + output_scale = tne((outscale or 1) * outscale0), + }, + }) end end -data.raw["noise-expression"]["cliffiness"].expression = noise.define_noise_function(function(x, y, tile, map) - local t = noise.clamp((tile.tier - 0.2) * noise.ceil(noise.var("control-setting:cliffs:richness:multiplier")), 0, 1) -- No cliffs in starting area - return 100 * t -end) -data.raw["noise-expression"]["elevation"].expression = noise.define_noise_function(function(x, y, tile, map) - x = x + 40000 - y = y - local v = make_basis_noise_function(map.seed, 5, 6, 1 / 64)(x, y) - v = noise.max(v, 0) - v = (v * elevation_scale) - (waterline * (elevation_scale - 1)) -- Increase gradient for cliffs while leaving waterline unchanged - return v -end) +if settings.startup["Landblock-mode-Seablock-setting"].value == false then + data.raw["noise-expression"]["cliffiness"].expression = noise.define_noise_function(function(x, y, tile, map) + local t = noise.clamp((tile.tier - 0.2) * noise.ceil(noise.var("control-setting:cliffs:richness:multiplier")), 0, 1) -- No cliffs in starting area + return 100 * t + end) + data.raw["noise-expression"]["elevation"].expression = noise.define_noise_function(function(x, y, tile, map) + x = x + 40000 + y = y + local v = make_basis_noise_function(map.seed, 5, 6, 1 / 64)(x, y) + v = noise.max(v, 0) + v = (v * elevation_scale) - (waterline * (elevation_scale - 1)) -- Increase gradient for cliffs while leaving waterline unchanged + return v + end) +end + + for k, v in pairs(data.raw.tree) do + if v.autoplace.tile_restriction ~= nil then + v.autoplace.tile_restriction = nil + end + end diff --git a/SeaBlock/remote.lua b/SeaBlock/remote.lua index cb62bcf..6b46f76 100644 --- a/SeaBlock/remote.lua +++ b/SeaBlock/remote.lua @@ -20,10 +20,200 @@ local function set_starting_items(items) global.starting_items = items end +-- Presets for Milestones mod +local function milestones_presets() + local grouped_milestones = {} + + -- Science + local bio_science_pack = script.active_mods["ScienceCostTweakerM"] and "sct-bio-science-pack" or "token-bio" + grouped_milestones["science"] = { + { type = "group", name = "Science" }, + { type = "item", name = "automation-science-pack", quantity = 1 }, + { type = "item", name = bio_science_pack, quantity = 1 }, + { type = "item", name = "logistic-science-pack", quantity = 1 }, + { type = "item", name = "military-science-pack", quantity = 1 }, + { type = "item", name = "chemical-science-pack", quantity = 1 }, + script.active_mods["bobtech"] and { type = "item", name = "advanced-logistic-science-pack", quantity = 1 } or nil, + { type = "item", name = "production-science-pack", quantity = 1 }, + { type = "item", name = "utility-science-pack", quantity = 1 }, + { type = "item", name = "automation-science-pack", quantity = 1000, next = "x10" }, + { type = "item", name = "space-science-pack", quantity = 1 }, + { type = "item", name = bio_science_pack, quantity = 1000, next = "x10" }, + { type = "item", name = "logistic-science-pack", quantity = 1000, next = "x10" }, + { type = "item", name = "military-science-pack", quantity = 1000, next = "x10" }, + { type = "item", name = "chemical-science-pack", quantity = 1000, next = "x10" }, + script.active_mods["bobtech"] + and { type = "item", name = "advanced-logistic-science-pack", quantity = 1000, next = "x10" } + or nil, + { type = "item", name = "production-science-pack", quantity = 1000, next = "x10" }, + { type = "item", name = "utility-science-pack", quantity = 1000, next = "x10" }, + { type = "item", name = "space-science-pack", quantity = 10000, next = "x10" }, + } + + -- Resources + grouped_milestones["resorces"] = { + { type = "group", name = "Resources" }, + { type = "item", name = "wood-charcoal", quantity = 1 }, + { type = "item", name = "basic-circuit-board", quantity = 1 }, + { type = "item", name = "electronic-circuit", quantity = 1 }, + { type = "item", name = "advanced-circuit", quantity = 1 }, + { type = "item", name = "processing-unit", quantity = 1 }, + { type = "item", name = "advanced-processing-unit", quantity = 1 }, + + { type = "item", name = "steel-plate", quantity = 1 }, + { type = "item", name = "bronze-alloy", quantity = 1 }, + { type = "item", name = "invar-alloy", quantity = 1 }, + { type = "item", name = "brass-alloy", quantity = 1 }, + { type = "item", name = "glass", quantity = 1 }, + { type = "item", name = "silver-plate", quantity = 1 }, + + { type = "item", name = "aluminium-plate", quantity = 1 }, + { type = "item", name = "titanium-plate", quantity = 1 }, + { type = "item", name = "gold-plate", quantity = 1 }, + { type = "item", name = "cobalt-steel-alloy", quantity = 1 }, + { type = "item", name = "angels-plate-chrome", quantity = 1 }, + { type = "item", name = "angels-plate-platinum", quantity = 1 }, + + { type = "item", name = "tungsten-plate", quantity = 1 }, + { type = "item", name = "copper-tungsten-alloy", quantity = 1 }, + { type = "item", name = "tungsten-carbide", quantity = 1 }, + { type = "item", name = "nitinol-alloy", quantity = 1 }, + + { type = "item", name = "plastic-bar", quantity = 1 }, + { type = "item", name = "resin", quantity = 1 }, + { type = "item", name = "rubber", quantity = 1 }, + { type = "item", name = "alien-bacteria", quantity = 1 }, + { type = "item", name = "sulfur", quantity = 1 }, + { type = "fluid", name = "mineral-sludge", quantity = 1 }, + { type = "fluid", name = "mineral-sludge", quantity = 10000, next = "x10" }, + } + + -- Progress + local seablock_default_landfill = script.active_mods["LandfillPainting"] + and settings.startup["sb-default-landfill"] + and settings.startup["sb-default-landfill"].value + or "landfill" + grouped_milestones["progress1"] = { + { type = "group", name = "Progress" }, + { type = "item", name = "lab", quantity = 1 }, + { type = "item", name = seablock_default_landfill, quantity = 1 }, + { type = "item", name = seablock_default_landfill, quantity = 1000, next = "x10" }, + { type = "alias", name = "landfill-dirt-4", equals = seablock_default_landfill, quantity = 1 }, + { type = "alias", name = "landfill-dry-dirt", equals = seablock_default_landfill, quantity = 1 }, + { type = "alias", name = "landfill-grass-1", equals = seablock_default_landfill, quantity = 1 }, + { type = "alias", name = "landfill-red-desert-1", equals = seablock_default_landfill, quantity = 1 }, + { type = "alias", name = "landfill-sand-3", equals = seablock_default_landfill, quantity = 1 }, + { type = "alias", name = "landfill", equals = seablock_default_landfill, quantity = 1 }, + { type = "fluid", name = "liquid-fuel-oil", quantity = 1 }, + { type = "item", name = "locomotive", quantity = 1 }, + { type = "item", name = "construction-robot", quantity = 1 }, + { type = "item", name = "logistic-chest-requester", quantity = 1 }, + } + + if not script.active_mods["bobmodules"] then + -- Vanilla modules + grouped_milestones["modules"] = { + { type = "item", name = "productivity-module", quantity = 1 }, + { type = "item", name = "productivity-module-4", quantity = 1 }, + { type = "item", name = "productivity-module-6", quantity = 1 }, + } + elseif script.active_mods["CircuitProcessing"] then + -- Circuit Processing modules + grouped_milestones["modules"] = { + { type = "item", name = "productivity-module-2", quantity = 1 }, + { type = "item", name = "productivity-module-4", quantity = 1 }, + { type = "item", name = "productivity-module-6", quantity = 1 }, + { type = "item", name = "productivity-module-8", quantity = 1 }, + } + else + -- Bob's Modules + grouped_milestones["modules"] = { + { type = "item", name = "productivity-module", quantity = 1 }, + { type = "item", name = "productivity-module-8", quantity = 1 }, + } + end + + grouped_milestones["progress2"] = { + { type = "item", name = "beacon", quantity = 1 }, + { type = "item", name = "rocket-fuel", quantity = 1 }, + { type = "technology", name = "rocket-silo", quantity = 1 }, + { type = "item", name = "nuclear-reactor", quantity = 1 }, + } + + -- SpaceX + if script.active_mods["SpaceMod"] then + grouped_milestones["SpaceX"] = { + { type = "group", name = "SpaceX" }, + { type = "item", name = "drydock-structural", quantity = 10 }, + { type = "item", name = "drydock-assembly", quantity = 2 }, + { type = "item", name = "protection-field", quantity = 1 }, + { type = "item", name = "fusion-reactor", quantity = 1 }, + { type = "item", name = "habitation", quantity = 1 }, + { type = "item", name = "life-support", quantity = 1 }, + { type = "item", name = "command", quantity = 1 }, + { type = "item", name = "fuel-cell", quantity = 2 }, + { type = "item", name = "space-thruster", quantity = 4 }, + { type = "item", name = "hull-component", quantity = 10 }, + { type = "technology", name = "ftl-theory-A", quantity = 1 }, + { type = "technology", name = "ftl-theory-B", quantity = 1 }, + { type = "technology", name = "ftl-theory-C", quantity = 1 }, + { type = "technology", name = "ftl-theory-D1", quantity = 1 }, + script.active_mods["bobtech"] and { type = "technology", name = "ftl-theory-D", quantity = 1 } or nil, + { type = "technology", name = "ftl-theory-D2", quantity = 1 }, + { type = "technology", name = "ftl-propulsion", quantity = 1 }, + { type = "item", name = "ftl-drive", quantity = 1 }, + } + end + + -- Kills + if script.active_mods["bobenemies"] then + grouped_milestones["kills"] = { + { type = "group", name = "Kills" }, + { type = "kill", name = "small-worm-turret", quantity = 1 }, + { type = "kill", name = "medium-worm-turret", quantity = 1 }, + { type = "kill", name = "big-worm-turret", quantity = 1 }, + { type = "alias", name = "bob-big-explosive-worm-turret", equals = "big-worm-turret", quantity = 1 }, + { type = "alias", name = "bob-big-piercing-worm-turret", equals = "big-worm-turret", quantity = 1 }, + { type = "alias", name = "bob-big-fire-worm-turret", equals = "big-worm-turret", quantity = 1 }, + { type = "alias", name = "bob-big-poison-worm-turret", equals = "big-worm-turret", quantity = 1 }, + { type = "alias", name = "bob-big-electric-worm-turret", equals = "big-worm-turret", quantity = 1 }, + { type = "kill", name = "bob-giant-worm-turret", quantity = 1 }, + { type = "kill", name = "behemoth-worm-turret", quantity = 1 }, + { type = "kill", name = "behemoth-worm-turret", quantity = 1000, next = "x10" }, + { type = "kill", name = "character", quantity = 1, next = "x5" }, + } + else + grouped_milestones["kills"] = { + { type = "group", name = "Kills" }, + { type = "kill", name = "small-worm-turret", quantity = 1 }, + { type = "kill", name = "medium-worm-turret", quantity = 1 }, + { type = "kill", name = "big-worm-turret", quantity = 1 }, + { type = "kill", name = "behemoth-worm-turret", quantity = 1 }, + { type = "kill", name = "behemoth-worm-turret", quantity = 1000, next = "x10" }, + { type = "kill", name = "character", quantity = 1, next = "x5" }, + } + end + + local milestones = {} + for group_name, group_milestones in pairs(grouped_milestones) do + for _, milestone in pairs(group_milestones) do + table.insert(milestones, milestone) + end + end + + return { + ["Sea Block"] = { + required_mods = { "SeaBlock", "bobplates", "bobelectronics", "angelsbioprocessing", "angelspetrochem" }, + milestones = milestones, + }, + } +end + remote.add_interface("SeaBlock", { get_unlocks = get_unlocks, set_unlock = set_unlock, get_starting_items = get_starting_items, set_starting_item = set_starting_item, set_starting_items = set_starting_items, + milestones_presets = milestones_presets, }) diff --git a/SeaBlock/settings-updates.lua b/SeaBlock/settings-updates.lua index 601ac12..d1c9dc0 100644 --- a/SeaBlock/settings-updates.lua +++ b/SeaBlock/settings-updates.lua @@ -42,6 +42,9 @@ require("settings-updates/bobpower") require("settings-updates/bobrevamp") require("settings-updates/bobtech") require("settings-updates/bobwarfare") + +require("settings-updates/cargoships") + require("settings-updates/reskins-angels") require("settings-updates/ScienceCostTweakerM") require("settings-updates/SpaceMod") diff --git a/SeaBlock/settings-updates/cargoships.lua b/SeaBlock/settings-updates/cargoships.lua new file mode 100644 index 0000000..c45677d --- /dev/null +++ b/SeaBlock/settings-updates/cargoships.lua @@ -0,0 +1,14 @@ +if mods["cargo-ships"] then + if data.raw["bool-setting"]["Cargo-ships-deep-oil-setting"].value == true then + --Override Cargo Ships Settings + --Make Deep-oil on on the assumption people want the oil to spawn + data.raw["bool-setting"]["deep_oil"].forced_value=true + + data.raw["bool-setting"]["deep_oil"].hidden=false + data.raw["string-setting"]["oil_richness"].hidden=false + data.raw["bool-setting"]["no_oil_for_oil_rig"].hidden=false + data.raw["int-setting"]["oil_rig_capacity"].hidden=false + data.raw["bool-setting"]["no_oil_on_land"].hidden=false + data.raw["bool-setting"]["no_shallow_oil"].hidden=false + end +end \ No newline at end of file diff --git a/SeaBlock/settings.lua b/SeaBlock/settings.lua index 8ef183c..e935947 100644 --- a/SeaBlock/settings.lua +++ b/SeaBlock/settings.lua @@ -20,3 +20,39 @@ if mods["LandfillPainting"] then }, }) end + +data:extend({ + { + type = "bool-setting", + name = "Landblock-mode-Seablock-setting", + setting_type = "startup", + default_value = false + } +}) + +data:extend({ + { + type = "bool-setting", + name = "No-minerals-mode-setting", + setting_type = "startup", + default_value = true + } +}) + +data:extend({ + { + type = "bool-setting", + name = "No-trees-mode-setting", + setting_type = "startup", + default_value = true + } +}) + +data:extend({ + { + type = "bool-setting", + name = "Cargo-ships-deep-oil-setting", + setting_type = "startup", + default_value = false + } +}) \ No newline at end of file diff --git a/SeaBlockMetaPack/info.json b/SeaBlockMetaPack/info.json index a07044b..2977967 100644 --- a/SeaBlockMetaPack/info.json +++ b/SeaBlockMetaPack/info.json @@ -1,12 +1,12 @@ { "name": "SeaBlockMetaPack", - "version": "1.1.3", + "version": "1.1.4", "factorio_version": "1.1", - "title": "Sea Block Pack", + "title": "Sea Block Pack - Official", "author": "Trainwreck", "contact": "https://forums.factorio.com/viewtopic.php?t=43759", "homepage": "https://github.com/KiwiHawk/SeaBlock", - "description": "Cutting edge version of the Sea Block mod pack. Contains dependencies on all mods distributed as part of the Sea Block Pack. This mod does nothing by itself.", + "description": "Enable this mod to get the full recommended Sea Block Mod Pack. Contains dependencies on all mods in the pack. Does nothing by itself.", "dependencies": [ "base", "angelsaddons-storage", @@ -40,6 +40,7 @@ "helmod", "KS_Power", "LandfillPainting", + "Milestones", "ScienceCostTweakerM", "SeaBlock", "SpaceMod"