Guest User

factorio saws 2.1 compat data-updates.lua

a guest
Sep 29th, 2026
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 38.69 KB | None | 0 0
  1. local sounds = require("__base__.prototypes.entity.sounds")
  2. local item_sounds = require("__base__.prototypes.item_sounds")
  3. local item_tints = require("__base__.prototypes.item-tints")
  4. local simulations = require("__base__.prototypes.factoriopedia-simulations")
  5. local resource_autoplace = require("resource-autoplace")
  6. local procession_graphic_catalogue_types = require("__base__/prototypes/planet/procession-graphic-catalogue-types")
  7.  
  8. local demolisher_territories = settings.startup["saws-demolisher-territories"].value
  9. if demolisher_territories then
  10.     local demolisher_safe_zone = settings.startup["saws-demolisher-safe-zone"].value
  11.     data.raw.planet.nauvis.map_gen_settings.territory_settings = data.raw.planet.vulcanus.map_gen_settings.territory_settings
  12.  
  13.  
  14.     data.raw["noise-expression"]["demolisher_starting_area"]["expression"] = "0 < starting_spot_at_angle{angle = vulcanus_mountains_angle - 5 * vulcanus_starting_direction,\z
  15.                                             distance = 100 * vulcanus_starting_area_radius + 32,\z
  16.                                             radius = ".. demolisher_safe_zone .." * 32,\z
  17.                                             x_distortion = 0,\z
  18.                                             y_distortion = 0}"
  19.     data.raw["noise-expression"]["demolisher_variation_expression"]["expression"] = "floor(clamp((distance - (" .. demolisher_safe_zone - 7 .. " * 32)) / (18 * 32) - 0.25, 0, 4)) + (-99 * no_enemies_mode)"
  20.  
  21. end
  22.  
  23. data.raw.planet.vulcanus.map_gen_settings = nil
  24. data.raw.planet.gleba.map_gen_settings = nil
  25. data.raw.planet.fulgora.map_gen_settings = nil
  26. data.raw.planet.aquilo.map_gen_settings = nil
  27.  
  28. -- data.raw["autoplace-control"].vulcanus_volcanism = nil
  29. -- data.raw["autoplace-control"].gleba_water = nil
  30. -- data.raw["autoplace-control"].fulgora_islands = nil
  31. data.raw["autoplace-control"].vulcanus_coal = nil
  32. data.raw["autoplace-control"].gleba_stone = nil
  33. data.raw["autoplace-control"].aquilo_crude_oil = nil
  34. -- data.raw["autoplace-control"].gleba_cliffs = nil
  35. -- data.raw["autoplace-control"].fulgora_cliffs = nil
  36.  
  37. data.raw.character.character.mining_categories = {"basic-solid", "hard-solid"}
  38. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["lithium_brine"] = {}
  39. data.raw.planet.nauvis.map_gen_settings.autoplace_settings.entity.settings["lithium-brine"] = {}
  40. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["fluorine_vent"] = {}
  41. data.raw.planet.nauvis.map_gen_settings.autoplace_settings.entity.settings["fluorine-vent"] = {}
  42. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["scrap"] = {}
  43. data.raw.planet.nauvis.map_gen_settings.autoplace_settings.entity.settings["scrap"] = {}
  44. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["calcite"] = {}
  45. data.raw.planet.nauvis.map_gen_settings.autoplace_settings.entity.settings["calcite"] = {}
  46. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["tungsten_ore"] = {}
  47. data.raw.planet.nauvis.map_gen_settings.autoplace_settings.entity.settings["tungsten-ore"] = {}
  48. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["gleba_enemy_base"] = {}
  49. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["gleba_plants"] = {}
  50. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["vulcanus_volcanism"] = {}
  51. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["sulfuric_acid_geyser"] = {}
  52. data.raw.planet.nauvis.map_gen_settings.autoplace_settings.entity.settings["sulfuric-acid-geyser"] = {}
  53. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["oil_sand"] = {}
  54. data.raw.planet.nauvis.map_gen_settings.autoplace_controls["ammoniacal_ocean"] = {}
  55. data.raw.planet.nauvis.map_gen_settings.autoplace_settings.tile.settings["oil-ocean-deep"] = {}
  56. data.raw.planet.nauvis.map_gen_settings.property_expression_names["entity:tungsten-ore:probability"] = "vulcanus_tungsten_ore_probability"
  57. data.raw.planet.nauvis.map_gen_settings.property_expression_names["entity:tungsten-ore:richness"] = "vulcanus_tungsten_ore_richness"
  58. data.raw.planet.nauvis.map_gen_settings.property_expression_names["entity:calcite:probability"] = "vulcanus_calcite_probability"
  59. data.raw.planet.nauvis.map_gen_settings.property_expression_names["entity:calcite:richness"] = "vulcanus_calcite_richness"
  60. data.raw.planet.nauvis.map_gen_settings.property_expression_names["entity:sulfuric-acid-geyser:probability"] = "vulcanus_sulfuric_acid_geyser_probability"
  61. data.raw.planet.nauvis.map_gen_settings.property_expression_names["entity:sulfuric-acid-geyser:richness"] = "vulcanus_sulfuric_acid_geyser_richness"
  62.  
  63. data.raw["autoplace-control"]["iron-ore"]["can_be_disabled"] = false
  64. data.raw["autoplace-control"]["copper-ore"]["can_be_disabled"] = false
  65. data.raw["autoplace-control"]["stone"]["can_be_disabled"] = false
  66. data.raw["autoplace-control"]["coal"]["can_be_disabled"] = false
  67. data.raw["autoplace-control"]["crude-oil"]["can_be_disabled"] = false
  68. data.raw["autoplace-control"]["calcite"]["can_be_disabled"] = false
  69. data.raw["autoplace-control"]["tungsten_ore"]["can_be_disabled"] = false
  70. data.raw["autoplace-control"]["scrap"]["can_be_disabled"] = false
  71. data.raw["autoplace-control"]["lithium_brine"]["can_be_disabled"] = false
  72. data.raw["autoplace-control"]["fluorine_vent"]["can_be_disabled"] = false
  73.  
  74. data:extend({
  75. --     {
  76. --         type = "autoplace-control",
  77. --         name = "demolisher-territories",
  78. --         localised_name = "Demolisher Territories",
  79. --         category = "enemy",
  80. --         richness = false
  81. --     },
  82.     {
  83.         type = "autoplace-control",
  84.         name = "oil_sand",
  85. --         localised_name = "[img=fluid.heavy-oil] Oil Sand",
  86.         category = "resource",
  87.         richness = false
  88.     },
  89.     {
  90.         type = "autoplace-control",
  91.         name = "ammoniacal_ocean",
  92. --         localised_name = "[img=fluid.ammoniacal-solution] Ammoniacal Ocean",
  93.         category = "resource",
  94.         richness = false,
  95.         can_be_disabled = false
  96.     },
  97. })
  98. data.raw.tile["oil-ocean-deep"].autoplace = resource_autoplace.resource_autoplace_settings
  99.     {
  100.       name = "oil-ocean",
  101.       order = "a",
  102.       base_density = 7,
  103.       base_spots_per_km2 = 0.02,
  104.       random_probability = 1,
  105.       random_spot_size_minimum = 0.02,
  106.       random_spot_size_maximum = 0.03,
  107.       has_starting_area_placement = false,
  108.       autoplace_control_name = "oil_sand"
  109.     }
  110.  
  111.  
  112. gleba_land_tiles = {
  113.   "natural-yumako-soil",
  114.   "natural-jellynut-soil",
  115.   "wetland-yumako",
  116.   "wetland-jellynut",
  117. --   "wetland-light-green-slime",
  118. --   "wetland-green-slime",
  119. --   "wetland-pink-tentacle",
  120. --   "wetland-red-tentacle",
  121.   "lowland-brown-blubber",
  122.   "lowland-olive-blubber",
  123.   "lowland-olive-blubber-2",
  124.   "lowland-olive-blubber-3",
  125.   "lowland-cream-red",
  126.   "lowland-red-vein",
  127.   "lowland-red-vein-2",
  128.   "lowland-red-vein-3",
  129.   "lowland-red-vein-4",
  130.   "lowland-red-vein-dead",
  131.   "lowland-red-infection",
  132. --   "lowland-pale-green",
  133. --   "lowland-cream-cauliflower",
  134. --   "lowland-cream-cauliflower-2",
  135. --   "lowland-dead-skin",
  136. --   "lowland-dead-skin-2",
  137. --   "midland-turquoise-bark",
  138. --   "midland-turquoise-bark-2",
  139. --   "midland-cracked-lichen",
  140. --   "midland-cracked-lichen-dull",
  141. --   "midland-cracked-lichen-dark",
  142. --   "midland-yellow-crust",
  143. --   "midland-yellow-crust-2",
  144. --   "midland-yellow-crust-3",
  145. --   "midland-yellow-crust-4",
  146. --   "highland-dark-rock",
  147. --   "highland-dark-rock-2",
  148. --   "highland-yellow-rock",
  149. --   "pit-rock",
  150. --   "wetland-blue-slime",
  151. --   "wetland-light-dead-skin",
  152. --   "wetland-dead-skin",
  153. --   "gleba-deep-lake",
  154. --   "snow-flat",
  155. --   "snow-crests",
  156. --   "snow-lumpy",
  157. --   "snow-patchy",
  158. --   "ice-rough",
  159. --   "ice-smooth",
  160. --   "brash-ice"
  161. }
  162. for _, tile_name in ipairs(gleba_land_tiles) do
  163.   data.raw.planet.nauvis.map_gen_settings.autoplace_settings["tile"].settings[tile_name] = {}
  164. end
  165. data.raw.planet.nauvis.map_gen_settings.autoplace_settings["tile"].settings["ammoniacal-ocean"] = {}
  166. data.raw.planet.nauvis.map_gen_settings.autoplace_settings["tile"].settings["ammoniacal-ocean-2"] = {}
  167.  
  168. data.raw.tile["ammoniacal-ocean"].autoplace = resource_autoplace.resource_autoplace_settings
  169.     {
  170.       name = "ammoniacal-ocean",
  171.       order = "a",
  172.       base_density = 8.2,
  173.       base_spots_per_km2 = 0.15,
  174.       random_probability = 1,
  175.       random_spot_size_minimum = 0.3,
  176.       random_spot_size_maximum = 1, -- don't randomize spot size
  177.       has_starting_area_placement = false,
  178.       autoplace_control_name = "ammoniacal_ocean"
  179.     }
  180. data.raw.tile["ammoniacal-ocean-2"].autoplace = resource_autoplace.resource_autoplace_settings
  181.     {
  182.       name = "ammoniacal-ocean-2",
  183.       order = "a",
  184.       base_density = 8.3,
  185.       base_spots_per_km2 = 0.15,
  186.       random_probability = 1,
  187.       random_spot_size_minimum = 0.3,
  188.       random_spot_size_maximum = 1, -- don't randomize spot size
  189.       has_starting_area_placement = false,
  190.       autoplace_control_name = "ammoniacal_ocean"
  191.     }
  192.  
  193. nauvis_tiles = {"grass-1", "grass-2", "grass-3", "grass-4", "dry-dirt", "dirt-1", "dirt-2", "dirt-3", "dirt-4", "dirt-5", "dirt-6", "dirt-7", "sand-1", "sand-2", "sand-3", "red-desert-0", "red-desert-1", "red-desert-2", "red-desert-3"}
  194. for _, tile in pairs(nauvis_tiles) do
  195.     table.insert(data.raw.item["overgrowth-yumako-soil"]["place_as_tile"]["tile_condition"], tile)
  196.     table.insert(data.raw.item["overgrowth-jellynut-soil"]["place_as_tile"]["tile_condition"], tile)
  197. end
  198.  
  199. gleba_trees = {
  200.     "cuttlepop",
  201.     "sunnycomb",
  202.     "slipstack",
  203.     "funneltrunk",
  204.     "hairyclubnub",
  205.     "teflilly",
  206.     "lickmaw",
  207.     "stingfrond",
  208.     "boompuff",
  209.     "water-cane"
  210.     }
  211. for _, tree in ipairs(gleba_trees) do
  212.     if data.raw.tree[tree] then
  213.         if data.raw.tree[tree].autoplace then
  214.             data.raw.tree[tree].autoplace["tile_restriction"] = gleba_land_tiles
  215.         end
  216.     end
  217. end
  218.  
  219. data.raw.technology["space-science-pack"].localised_description = {"technology-description.space-science-pack"}
  220.  
  221. data.raw["rocket-silo"]["rocket-silo"].launch_to_space_platforms = false
  222. data.raw["rocket-silo"]["rocket-silo"].to_be_inserted_to_rocket_inventory_size = 1
  223. data.raw["rocket-silo"]["rocket-silo"].logistic_trash_inventory_size = 0
  224. data.raw["rocket-silo-rocket"]["rocket-silo-rocket"].inventory_size = 0
  225.  
  226.  
  227. data.raw["rocket-silo"]["rocket-silo"].rocket_parts_required = 100
  228. data.raw.technology["rocket-silo"].effects =     {
  229.       {
  230.         type = "unlock-recipe",
  231.         recipe = "rocket-silo"
  232.       },
  233.       {
  234.         type = "unlock-recipe",
  235.         recipe = "rocket-part"
  236.       },
  237.       {
  238.         type = "unlock-recipe",
  239.         recipe = "cargo-landing-pad"
  240.       },
  241.       {
  242.         type = "unlock-recipe",
  243.         recipe = "satellite"
  244.       }
  245.     }
  246. data.raw.recipe["rocket-silo"].ingredients =
  247. {
  248.       {type = "item", name = "lithium-plate", amount = 1000},
  249.       {type = "item", name = "refined-concrete", amount = 1000},
  250.       {type = "item", name = "pipe", amount = 100},
  251.       {type = "item", name = "quantum-processor", amount = 200},
  252.       {type = "item", name = "electric-engine-unit", amount = 200}
  253. }
  254. data.raw.recipe["rocket-part"].ingredients =
  255. {
  256.   {type = "item", name = "quantum-processor", amount = 10},
  257.   {type = "item", name = "low-density-structure", amount = 10},
  258.   {type = "item", name = "rocket-fuel", amount = 10}
  259. }
  260. data.raw.technology["rocket-silo"].prerequisites = {"quantum-processor", "speed-module-3", "productivity-module-3", "solar-energy", "radar", "electric-energy-accumulators"}
  261. data.raw.technology["rocket-silo"].unit.ingredients =
  262. {
  263.         {"automation-science-pack", 1},
  264.         {"logistic-science-pack", 1},
  265.         {"chemical-science-pack", 1},
  266.         {"production-science-pack", 1},
  267.         {"utility-science-pack", 1},
  268.         {"metallurgic-science-pack", 1},
  269.         {"agricultural-science-pack", 1},
  270.         {"electromagnetic-science-pack", 1},
  271.         {"cryogenic-science-pack", 1}
  272. }
  273. data.raw["rocket-silo"]["rocket-silo"].circuit_connector = nil
  274. data.raw["rocket-silo"]["rocket-silo"].circuit_wire_max_distance = nil
  275. data.raw.technology["space-science-pack"] = nil
  276. data:extend({
  277.       {
  278.     type = "technology",
  279.     name = "space-science-pack",
  280.     icon = "__base__/graphics/technology/space-science-pack.png",
  281.     icon_size = 256,
  282.     essential = true,
  283.     effects = {},
  284.     research_trigger =
  285.     {
  286.       type = "send-item-to-orbit",
  287.       item = "satellite"
  288.     },
  289.     prerequisites = {"rocket-silo"}
  290.   },
  291.   {
  292.     type = "item",
  293.     name = "satellite",
  294.     icon = "__base__/graphics/icons/satellite.png",
  295.     subgroup = "space-related",
  296.     order = "d[rocket-parts]-e[satellite]",
  297.     inventory_move_sound = item_sounds.mechanical_inventory_move,
  298.     pick_sound = item_sounds.mechanical_inventory_pickup,
  299.     drop_sound = item_sounds.mechanical_inventory_move,
  300.     stack_size = 1,
  301.     weight = 1 * tons,
  302.     rocket_launch_products = {{type = "item", name = "space-science-pack", amount = 1000}},
  303.     send_to_orbit_mode = "automated"
  304.   },
  305.   {
  306.     type = "recipe",
  307.     name = "satellite",
  308.     energy_required = 5,
  309.     enabled = false,
  310.     category = "crafting",
  311.     ingredients =
  312.     {
  313.       {type = "item", name = "low-density-structure", amount = 100},
  314.       {type = "item", name = "solar-panel", amount = 100},
  315.       {type = "item", name = "accumulator", amount = 100},
  316.       {type = "item", name = "radar", amount = 5},
  317.       {type = "item", name = "quantum-processor", amount = 100},
  318.       {type = "item", name = "rocket-fuel", amount = 50},
  319.       {type = "item", name = "biter-egg", amount = 1000}
  320.     },
  321.     results = {{type="item", name="satellite", amount=1}},
  322.     requester_paste_multiplier = 1
  323.   },
  324. })
  325. if settings.startup["saws-lava"].value == true then
  326.     data.raw["autoplace-control"]["vulcanus_volcanism"]["can_be_disabled"] = false
  327.     data.raw["autoplace-control"]["vulcanus_volcanism"]["order"] = nil
  328.     data.raw["autoplace-control"]["vulcanus_volcanism"]["category"] = "resource"
  329.     data.raw.planet.nauvis.map_gen_settings.autoplace_settings.tile.settings["lava"] = {}
  330.     data.raw.tile["lava"].autoplace = resource_autoplace.resource_autoplace_settings
  331.         {
  332.           name = "lava",
  333.           order = "a",
  334.           base_density = 7,
  335.           base_spots_per_km2 = 0.04,
  336.           random_probability = 1,
  337.           random_spot_size_minimum = 0.2,
  338.           random_spot_size_maximum = 0.7,
  339.           has_starting_area_placement = false,
  340.           autoplace_control_name = "vulcanus_volcanism"
  341.         }
  342.     data.raw.tile["lava-hot"].autoplace = resource_autoplace.resource_autoplace_settings
  343.         {
  344.           name = "lava",
  345.           order = "a",
  346.           base_density = 7,
  347.           base_spots_per_km2 = 0.01,
  348.           random_probability = 1,
  349.           random_spot_size_minimum = 0.2,
  350.           random_spot_size_maximum = 0.6,
  351.           has_starting_area_placement = false,
  352.           autoplace_control_name = "vulcanus_volcanism"
  353.         }
  354.     data:extend({
  355.       {
  356.         type = "technology",
  357.         name = "lava-processing",
  358.     --     localised_name = "Lava Processing",
  359.     --     localised_description = "Enables processing Molten Iron and Molten Copper from Lava.",
  360.         icon = "__space-age__/graphics/icons/fluid/lava.png",
  361.         icon_size = 64,
  362.         effects = {
  363.           {
  364.             type = "unlock-recipe",
  365.             recipe = "molten-iron-from-lava"
  366.           },
  367.           {
  368.             type = "unlock-recipe",
  369.             recipe = "molten-copper-from-lava"
  370.           }
  371.         },
  372.         prerequisites = {"production-science-pack", "metallurgic-science-pack"},
  373.         unit = {
  374.           count = 1000,
  375.           ingredients =
  376.           {
  377.             {"automation-science-pack", 1},
  378.             {"logistic-science-pack", 1},
  379.             {"chemical-science-pack", 1},
  380.             {"production-science-pack", 1},
  381.             {"metallurgic-science-pack", 1}
  382.           },
  383.           time = 30
  384.         }
  385.       }
  386.  
  387.     })
  388. end
  389.  
  390. data.raw.technology["agricultural-science-pack"].prerequisites = {"bioflux"}
  391. data.raw.technology["agricultural-science-pack"].research_trigger = nil
  392. data.raw.technology["agricultural-science-pack"].unit = {
  393.       count = 1000,
  394.       ingredients =
  395.       {
  396.         {"automation-science-pack", 1},
  397.         {"logistic-science-pack", 1},
  398.         {"chemical-science-pack", 1},
  399.       },
  400.       time = 30
  401. }
  402. data.raw.technology["metallurgic-science-pack"].research_trigger = nil
  403. data.raw.technology["metallurgic-science-pack"].unit = {
  404.       count = 1000,
  405.       ingredients =
  406.       {
  407.         {"automation-science-pack", 1},
  408.         {"logistic-science-pack", 1},
  409.         {"chemical-science-pack", 1},
  410.       },
  411.       time = 30
  412. }
  413. data.raw.technology["electromagnetic-science-pack"].research_trigger = nil
  414. data.raw.technology["electromagnetic-science-pack"].unit = {
  415.       count = 1000,
  416.       ingredients =
  417.       {
  418.         {"automation-science-pack", 1},
  419.         {"logistic-science-pack", 1},
  420.         {"chemical-science-pack", 1},
  421.       },
  422.       time = 30
  423. }
  424. data.raw.technology["cryogenic-science-pack"].research_trigger = nil
  425. data.raw.technology["cryogenic-science-pack"].unit = {
  426.       count = 1000,
  427.       ingredients =
  428.       {
  429.         {"automation-science-pack", 1},
  430.         {"logistic-science-pack", 1},
  431.         {"chemical-science-pack", 1},
  432.         {"production-science-pack", 1},
  433.         {"utility-science-pack", 1},
  434.         {"metallurgic-science-pack", 1},
  435.         {"agricultural-science-pack", 1},
  436.         {"electromagnetic-science-pack", 1},
  437.       },
  438.       time = 60
  439. }
  440.  
  441. data.raw.technology["lithium-processing"].effects = {
  442.           {
  443.         type = "unlock-recipe",
  444.         recipe = "ammoniacal-solution-separation",
  445.       },
  446.       {
  447.         type = "unlock-recipe",
  448.         recipe = "solid-fuel-from-ammonia"
  449.       },
  450.       {
  451.         type = "unlock-recipe",
  452.         recipe = "ammonia-rocket-fuel"
  453.       },
  454.       {
  455.         type = "unlock-recipe",
  456.         recipe = "ice-platform",
  457.       },
  458.       {
  459.         type = "unlock-recipe",
  460.         recipe = "lithium"
  461.       },
  462.       {
  463.         type = "unlock-recipe",
  464.         recipe = "lithium-plate"
  465.       }
  466.   }
  467. for _, tech in pairs(data.raw.technology) do
  468.   if tech.unit and tech.unit.ingredients then
  469.     for i = #tech.unit.ingredients, 1, -1 do
  470.       if tech.unit.ingredients[i][1] == "space-science-pack" then
  471.         table.remove(tech.unit.ingredients, i)
  472.       elseif tech.unit.ingredients[i][1] == "promethium-science-pack" then
  473.         tech.unit.ingredients[i][1] = "space-science-pack"
  474.       end
  475.     end
  476.   end
  477.  
  478.   if tech.prerequisites then
  479.     for i = #tech.prerequisites, 1, -1 do
  480.       if tech.prerequisites[i] == "space-science-pack" then
  481.         table.remove(tech.prerequisites, i)
  482.       elseif tech.prerequisites[i] == "promethium-science-pack" then
  483.         tech.prerequisites[i] = "space-science-pack"
  484.       end
  485.     end
  486.   end
  487. end
  488. data.raw.technology["space-platform"] = nil
  489. data.raw.technology["space-platform-thruster"] = nil
  490. data.raw.technology["planet-discovery-vulcanus"] = nil
  491. data.raw.technology["planet-discovery-gleba"] = nil
  492. data.raw.technology["planet-discovery-fulgora"] = nil
  493. data.raw.technology["planet-discovery-aquilo"] = nil
  494. data.raw.technology["lightning-collector"] = nil
  495. data.raw.technology["asteroid-reprocessing"] = nil
  496. data.raw.technology["advanced-asteroid-processing"] = nil
  497. data.raw.technology["promethium-science-pack"] = nil
  498. data.raw.technology["asteroid-productivity"] = nil
  499.  
  500. for lab, lab_data in pairs(data.raw.lab) do
  501.     local inputs = lab_data.inputs
  502.     lab_data.inputs = {}
  503.     for i = #inputs, 1, -1 do
  504.         if inputs[i] == "promethium-science-pack" then
  505.             table.insert(lab_data.inputs, "space-science-pack")
  506.         elseif inputs[i] ~= "space-science-pack" then
  507.             table.insert(lab_data.inputs, inputs[i])
  508.         end
  509.     end
  510. end
  511. local scrap_recipe_setting = settings.startup["saws-scrap-recipe"].value
  512.  
  513. if scrap_recipe_setting == "no-ice" then
  514.     data.raw.recipe["scrap-recycling"].results =
  515.         {
  516.           {type = "item", name = "processing-unit",        amount = 1, probability = 0.02, show_details_in_recipe_tooltip = false},
  517.           {type = "item", name = "advanced-circuit",       amount = 1, probability = 0.03, show_details_in_recipe_tooltip = false},
  518.           {type = "item", name = "low-density-structure",  amount = 1, probability = 0.01, show_details_in_recipe_tooltip = false},
  519.           {type = "item", name = "solid-fuel",             amount = 1, probability = 0.07, show_details_in_recipe_tooltip = false},
  520.           {type = "item", name = "steel-plate",            amount = 1, probability = 0.04, show_details_in_recipe_tooltip = false},
  521.           {type = "item", name = "concrete",               amount = 1, probability = 0.06, show_details_in_recipe_tooltip = false},
  522.           {type = "item", name = "battery",                amount = 1, probability = 0.04, show_details_in_recipe_tooltip = false},
  523.           {type = "item", name = "stone",                  amount = 1, probability = 0.04, show_details_in_recipe_tooltip = false},
  524.           {type = "item", name = "holmium-ore",            amount = 1, probability = 0.01, show_details_in_recipe_tooltip = false},
  525.           {type = "item", name = "iron-gear-wheel",        amount = 1, probability = 0.20, show_details_in_recipe_tooltip = false},
  526.           {type = "item", name = "copper-cable",           amount = 1, probability = 0.03, show_details_in_recipe_tooltip = false}
  527.         }
  528. elseif scrap_recipe_setting == "nerfed" then
  529.     data.raw.recipe["scrap-recycling"].results =
  530.         {
  531.           {type = "item", name = "processing-unit",        amount = 1, probability = 0.002, show_details_in_recipe_tooltip = false},
  532.           {type = "item", name = "advanced-circuit",       amount = 1, probability = 0.003, show_details_in_recipe_tooltip = false},
  533.           {type = "item", name = "low-density-structure",  amount = 1, probability = 0.001, show_details_in_recipe_tooltip = false},
  534.           {type = "item", name = "solid-fuel",             amount = 1, probability = 0.007, show_details_in_recipe_tooltip = false},
  535.           {type = "item", name = "steel-plate",            amount = 1, probability = 0.004, show_details_in_recipe_tooltip = false},
  536.           {type = "item", name = "concrete",               amount = 1, probability = 0.06, show_details_in_recipe_tooltip = false},
  537.           {type = "item", name = "battery",                amount = 1, probability = 0.004, show_details_in_recipe_tooltip = false},
  538.           {type = "item", name = "stone",                  amount = 1, probability = 0.04, show_details_in_recipe_tooltip = false},
  539.           {type = "item", name = "holmium-ore",            amount = 1, probability = 0.01, show_details_in_recipe_tooltip = false},
  540.           {type = "item", name = "iron-gear-wheel",        amount = 1, probability = 0.20, show_details_in_recipe_tooltip = false},
  541.           {type = "item", name = "copper-cable",           amount = 1, probability = 0.03, show_details_in_recipe_tooltip = false}
  542.         }
  543. elseif scrap_recipe_setting == "ore-only" then
  544.     data.raw.recipe["scrap-recycling"].results =
  545.         {
  546.           {type = "item", name = "iron-ore",               amount = 1, probability = 0.20, show_details_in_recipe_tooltip = false},
  547.           {type = "item", name = "copper-ore",             amount = 1, probability = 0.20, show_details_in_recipe_tooltip = false},
  548.           {type = "item", name = "coal",                   amount = 1, probability = 0.10, show_details_in_recipe_tooltip = false},
  549.           {type = "item", name = "stone",                  amount = 1, probability = 0.10, show_details_in_recipe_tooltip = false},
  550.           {type = "item", name = "holmium-ore",            amount = 1, probability = 0.01, show_details_in_recipe_tooltip = false}
  551.         }
  552. end
  553.  
  554.  
  555. for _, item in pairs(data.raw["item"]) do
  556.     item.default_import_location = "nauvis"
  557. end
  558.  
  559. if scrap_recipe_setting == "ore-only" then
  560.     data.raw.technology.recycling.prerequisites = {"processing-unit", "concrete"}
  561. else
  562.     data.raw.technology.recycling.prerequisites = {"processing-unit", "concrete", "battery", "low-density-structure"}
  563. end
  564. data.raw.technology.recycling.research_trigger = nil
  565. data.raw.technology.recycling.unit =
  566. {
  567.       count = 2500,
  568.       ingredients =
  569.       {
  570.         { "automation-science-pack", 1 },
  571.         { "logistic-science-pack", 1 },
  572.         { "chemical-science-pack", 1 }
  573.       },
  574.       time = 15
  575. }
  576.  
  577. if scrap_recipe_setting == "space-age" then
  578.     table.insert(data.raw.technology.recycling.effects,
  579.     {
  580.       type = "unlock-recipe",
  581.       recipe = "ice-melting",
  582.     })
  583. else
  584.     table.insert(data.raw.technology["lithium-processing"].effects,
  585.     {
  586.       type = "unlock-recipe",
  587.       recipe = "ice-melting",
  588.     })
  589. end
  590.  
  591. data.raw.technology["calcite-processing"].research_trigger = nil
  592. data.raw.technology["calcite-processing"].prerequisites = {"metallurgic-science-pack"}
  593. data.raw.technology["calcite-processing"].unit = {
  594.       count = 500,
  595.       ingredients =
  596.       {
  597.         { "automation-science-pack", 1 },
  598.         { "logistic-science-pack", 1 },
  599.         { "chemical-science-pack", 1 },
  600.         { "production-science-pack", 1 },
  601.         { "utility-science-pack", 1 },
  602.         { "metallurgic-science-pack", 1 }
  603.       },
  604.       time = 15
  605. }
  606. data.raw.technology["rocket-part-productivity"].prerequisites = {"space-science-pack"}
  607. data.raw.technology["rocket-part-productivity"].unit.ingredients = {
  608.         {"automation-science-pack", 1},
  609.         {"logistic-science-pack", 1},
  610.         {"chemical-science-pack", 1},
  611.         {"production-science-pack", 1},
  612.         {"cryogenic-science-pack", 1},
  613.         {"space-science-pack", 1}
  614. }
  615. data.raw.technology["tungsten-carbide"].prerequisites = {"lubricant", "concrete", "electric-engine"}
  616. -- data.raw.technology["tungsten-carbide"].localised_description = "Allows you to make tungsten carbide, a hard heat resistant ceramic. In Space Age Without Space, your character can mine Tungsten Ore from Tungsten Ore patches."
  617. data.raw.technology["tungsten-carbide"].research_trigger = nil
  618. data.raw.technology["tungsten-carbide"].unit =
  619. {
  620.       count = 2500,
  621.       ingredients =
  622.       {
  623.         { "automation-science-pack", 1 },
  624.         { "logistic-science-pack", 1 },
  625.         { "chemical-science-pack", 1 }
  626.       },
  627.       time = 15
  628. }
  629. data.raw.technology.foundry.prerequisites = {"tungsten-carbide"}
  630. data.raw.technology.foundry.effects = {
  631.       {
  632.         type = "unlock-recipe",
  633.         recipe = "foundry"
  634.       },
  635.       {
  636.         type = "unlock-recipe",
  637.         recipe = "concrete-from-molten-iron"
  638.       },
  639.       {
  640.         type = "unlock-recipe",
  641.         recipe = "molten-iron"
  642.       },
  643.       {
  644.         type = "unlock-recipe",
  645.         recipe = "molten-copper"
  646.       },
  647.       {
  648.         type = "unlock-recipe",
  649.         recipe = "casting-iron"
  650.       },
  651.       {
  652.         type = "unlock-recipe",
  653.         recipe = "casting-steel"
  654.       },
  655.       {
  656.         type = "unlock-recipe",
  657.         recipe = "casting-copper"
  658.       },
  659.       {
  660.         type = "unlock-recipe",
  661.         recipe = "casting-iron-gear-wheel"
  662.       },
  663.       {
  664.         type = "unlock-recipe",
  665.         recipe = "casting-iron-stick"
  666.       },
  667.       {
  668.         type = "unlock-recipe",
  669.         recipe = "casting-pipe"
  670.       },
  671.       {
  672.         type = "unlock-recipe",
  673.         recipe = "casting-pipe-to-ground"
  674.       },
  675.       {
  676.         type = "unlock-recipe",
  677.         recipe = "casting-copper-cable"
  678.       },
  679.     }
  680. table.insert(data.raw.technology["low-density-structure"].effects, {type = "unlock-recipe", recipe = "casting-low-density-structure"})
  681. table.insert(data.raw.technology["low-density-structure-productivity"].prerequisites, "low-density-structure")
  682. table.insert(data.raw.technology["rocket-fuel-productivity"].prerequisites, "rocket-fuel")
  683.  
  684. data.raw.technology["agriculture"].prerequisites = {"chemical-science-pack", "landfill"}
  685. data.raw.technology["agriculture"].research_trigger = nil
  686. data.raw.technology["agriculture"].unit =
  687. {
  688.       count = 1000,
  689.       ingredients =
  690.       {
  691.         { "automation-science-pack", 1 },
  692.         { "logistic-science-pack", 1 },
  693.         { "chemical-science-pack", 1 }
  694.       },
  695.       time = 15
  696. }
  697. data.raw.technology["heating-tower"].prerequisites = {"agricultural-science-pack", "utility-science-pack"}
  698. data.raw.technology["heating-tower"].research_trigger = nil
  699. data.raw.technology["heating-tower"].unit =
  700. {
  701.     count = 250,
  702.     ingredients =
  703.       {
  704.         { "automation-science-pack", 1 },
  705.         { "logistic-science-pack", 1 },
  706.         { "chemical-science-pack", 1 },
  707.         { "utility-science-pack", 1 },
  708.         { "agricultural-science-pack", 1 }
  709.       },
  710.     time = 15
  711. }
  712. if settings.startup["saws-bacteria-cultivation"].value == true then
  713.     data.raw.technology["bacteria-cultivation"].prerequisites = {"agricultural-science-pack", "production-science-pack"}
  714.     data.raw.technology["bacteria-cultivation"].research_trigger = nil
  715.     data.raw.technology["bacteria-cultivation"].unit =
  716.     {
  717.         count = 300,
  718.         ingredients =
  719.           {
  720.             { "automation-science-pack", 1 },
  721.             { "logistic-science-pack", 1 },
  722.             { "chemical-science-pack", 1 },
  723.             { "production-science-pack", 1 },
  724.             { "agricultural-science-pack", 1 },
  725.           },
  726.         time = 15
  727.     }
  728. else
  729.     data.raw.technology["bacteria-cultivation"] = nil
  730. end
  731. data.raw.technology["bioflux-processing"].prerequisites = {"agricultural-science-pack", "rocket-fuel"}
  732. data.raw.technology["bioflux-processing"].research_trigger = nil
  733. data.raw.technology["bioflux-processing"].unit =
  734. {
  735.     count = 300,
  736.     ingredients =
  737.       {
  738.         { "automation-science-pack", 1 },
  739.         { "logistic-science-pack", 1 },
  740.         { "chemical-science-pack", 1 },
  741.         { "agricultural-science-pack", 1 },
  742.       },
  743.     time = 15
  744. }
  745. data.raw.technology["lithium-processing"].prerequisites = {"production-science-pack", "utility-science-pack", "electromagnetic-science-pack", "agricultural-science-pack", "metallurgic-science-pack"}
  746. data.raw.technology["lithium-processing"].research_trigger = nil
  747. data.raw.technology["lithium-processing"].unit =
  748. {
  749.     count = 3000,
  750.     ingredients =
  751.       {
  752.         { "automation-science-pack", 1 },
  753.         { "logistic-science-pack", 1 },
  754.         { "chemical-science-pack", 1 },
  755.         { "production-science-pack", 1 },
  756.         { "utility-science-pack", 1 },
  757.         { "electromagnetic-science-pack", 1 },
  758.         { "agricultural-science-pack", 1 },
  759.         { "metallurgic-science-pack", 1 }
  760.       },
  761.     time = 15
  762. }
  763. data.raw.technology["cryogenic-plant"].prerequisites = {"lithium-processing"}
  764. data.raw.technology["logistic-system"].prerequisites = {"utility-science-pack", "logistic-robotics"}
  765. data.raw.technology["logistic-system"].unit.ingredients =
  766. {
  767.   {"automation-science-pack", 1},
  768.   {"logistic-science-pack", 1},
  769.   {"chemical-science-pack", 1},
  770.   {"utility-science-pack", 1}
  771. }
  772. data.raw.technology["research-productivity"].prerequisites = {"space-science-pack"}
  773. data.raw.technology["research-productivity"].unit.ingredients =
  774. {
  775.     {"automation-science-pack", 1},
  776.         {"logistic-science-pack", 1},
  777.         {"military-science-pack", 1},
  778.         {"chemical-science-pack", 1},
  779.         {"production-science-pack", 1},
  780.         {"utility-science-pack", 1},
  781.         {"metallurgic-science-pack", 1},
  782.         {"agricultural-science-pack", 1},
  783.         {"electromagnetic-science-pack", 1},
  784.         {"cryogenic-science-pack", 1},
  785.         {"space-science-pack", 1}
  786. }
  787.  
  788. data.raw.technology["speed-module-2"].prerequisites = {"speed-module", "processing-unit"}
  789. data.raw.technology["productivity-module-2"].prerequisites = {"productivity-module", "processing-unit"}
  790. data.raw.technology["efficiency-module-2"].prerequisites = {"efficiency-module", "processing-unit"}
  791. data.raw.technology["quality-module-2"].prerequisites = {"quality-module", "processing-unit"}
  792.  
  793.  
  794. data.raw.technology["kovarex-enrichment-process"].prerequisites = {"uranium-processing", "production-science-pack", "rocket-fuel"}
  795. data.raw.technology["kovarex-enrichment-process"].unit =
  796. {
  797.   count = 1500,
  798.   ingredients =
  799.   {
  800.     {"automation-science-pack", 1},
  801.     {"logistic-science-pack", 1},
  802.     {"chemical-science-pack", 1},
  803.     {"production-science-pack", 1}
  804.   },
  805.   time = 30
  806. }
  807. data.raw.tool["space-science-pack"].stack_size = 2000
  808.  
  809. data.raw["cargo-landing-pad"]["cargo-landing-pad"].trash_inventory_size = nil
  810. data.raw["cargo-landing-pad"]["cargo-landing-pad"].cargo_station_parameters =
  811.     {
  812.       hatch_definitions =
  813.       {
  814.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  815.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  816.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  817.  
  818.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  819.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  820.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  821.  
  822.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  823.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  824.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  825.  
  826.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  827.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  828.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  829.  
  830.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  831.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  832.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  833.  
  834.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  835.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  836.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  837.  
  838.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  839.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  840.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  841.  
  842.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  843.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  844.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  845.  
  846.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  847.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  848.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3),
  849.  
  850.         planet_upper_hatch({0.5, -3.5},  2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_1),
  851.         planet_upper_hatch({2, -3.5},    2.25, 3, -0.5, procession_graphic_catalogue_types.planet_hatch_emission_in_2),
  852.         planet_upper_hatch({1.25, -2.5}, 1.25, 3, -1  , procession_graphic_catalogue_types.planet_hatch_emission_in_3)
  853.       },
  854.       giga_hatch_definitions =
  855.       {
  856.         planet_upper_giga_hatch({0,1,2, 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29})
  857.       }
  858.     }
  859.  
  860. local tips_and_tricks = {
  861.     "fulgora-briefing",
  862.     "gleba-briefing",
  863.     "vulcanus-briefing",
  864.     "aquilo-briefing",
  865. }
  866.  
  867. for _, name in pairs(tips_and_tricks) do
  868.     if data.raw["tips-and-tricks-item"][name] then
  869.         data.raw["tips-and-tricks-item"][name] = nil
  870.     end
  871. end
  872. main_menu_simulations = data.raw["utility-constants"]["default"].main_menu_simulations
  873. main_menu_simulations.nauvis_artillery = nil
  874. main_menu_simulations.nauvis_oil_refinery = nil
  875. main_menu_simulations.train_junction = nil
  876. main_menu_simulations.nauvis_train_station = nil
  877. main_menu_simulations.nauvis_train_junction = nil
  878. main_menu_simulations.platform_science = nil
  879. main_menu_simulations.platform_moving = nil
  880. main_menu_simulations.platform_messy_nuclear = nil
  881. main_menu_simulations.vulcanus_lava_forge = nil
  882. main_menu_simulations.vulcanus_crossing = nil
  883. main_menu_simulations.vulcanus_punishmnent = nil
  884. main_menu_simulations.vulcanus_sulfur_drop = nil
  885. main_menu_simulations.gleba_agri_towers = nil
  886. main_menu_simulations.gleba_pentapod_ponds = nil
  887. main_menu_simulations.gleba_egg_escape = nil
  888. main_menu_simulations.gleba_farm_attack = nil
  889. main_menu_simulations.gleba_grotto = nil
  890. main_menu_simulations.fulgora_city_crossing = nil
  891. main_menu_simulations.fulgora_recycling_hell = nil
  892. main_menu_simulations.fulgora_nightfall = nil
  893. main_menu_simulations.fulgora_race = nil
  894. main_menu_simulations.aquilo_send_help = nil
  895. main_menu_simulations.aquilo_starter = nil
  896.  
  897. data.raw["create-platform-achievement"] = nil
  898. data.raw["change-surface-achievement"] = nil
  899. data.raw["space-connection-distance-traveled-achievement"] = nil
  900. data.raw["research-with-science-pack-achievement"]["research-with-promethium"] = nil
  901.  
  902. for _, category in pairs(data.raw) do
  903.     for name, data in pairs(category) do
  904.         if data.surface_conditions and data.type ~= "explosion" then
  905.             data.surface_conditions = nil
  906.         end
  907.     end
  908. end
  909.  
  910. for music_name, music in pairs(data.raw["ambient-sound"]) do
  911.     if (music.planet == "vulcanus" and settings.startup["saws-music-vulcanus"].value) or (music.planet == "fulgora" and settings.startup["saws-music-fulgora"].value) or (music.planet == "gleba" and settings.startup["saws-music-gleba"].value) or (music.planet == "aquilo" and settings.startup["saws-music-aquilo"].value) or (music.planet == nil and settings.startup["saws-music-space"].value) then
  912.         if music.track_type ~= "menu-track" then
  913.             log(music_name)
  914.             music.planet = "nauvis"
  915.             if music.track_type == "hero-track" then
  916.                 music.track_type = "main-track"
  917.             end
  918.         end
  919.     end
  920. end
  921.  
Advertisement
Add Comment
Please, Sign In to add comment