diff --git a/changelog.txt b/changelog.txt index 6c72240..747083c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -6,6 +6,9 @@ Date: 2022-12-24 - Without "more intermediates", PCB can be made in normal chem plant Changes: - Thumbnail tweak + - Early game salt: New setting to choose one or both of + From water in fluid-enabled tier 1 assemblers (or tier 0 with AAI Industry) (default) + A starting area salt patch, and more salt near starting area - SE: Less salt in core mining - SE: thermofluid basic recipe requires salt Features: diff --git a/data-updates.lua b/data-updates.lua index e3d24a4..bc71429 100644 --- a/data-updates.lua +++ b/data-updates.lua @@ -6,7 +6,41 @@ require("map-gen-preset-updates") -- require("compatibility/248k") require("compatibility/bob") -local util = require("data-util"); +local futil = require("util") +local util = require("data-util") + +if util.me.early_assemblers() then + util.add_crafting_category("assembling-machine", "assembling-machine-1", "crafting-with-fluid") + data.raw["assembling-machine"]["assembling-machine-1"].fluid_boxes = futil.table.deepcopy(data.raw["assembling-machine"]["assembling-machine-2"].fluid_boxes) + for i, fb in pairs(data.raw["assembling-machine"]["assembling-machine-1"].fluid_boxes) do + if i ~= "off_when_no_fluid_recipe" and fb.pipe_picture then + fb.pipe_picture.north.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-N.png" + fb.pipe_picture.north.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.png" + fb.pipe_picture.south.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-S.png" + fb.pipe_picture.south.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.png" + fb.pipe_picture.east.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-E.png" + fb.pipe_picture.east.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.png" + fb.pipe_picture.west.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-W.png" + fb.pipe_picture.west.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.png" + end + end + if data.raw["assembling-machine"]["burner-assembling-machine"] then + util.add_crafting_category("assembling-machine", "burner-assembling-machine", "crafting-with-fluid") + data.raw["assembling-machine"]["burner-assembling-machine"].fluid_boxes = futil.table.deepcopy(data.raw["assembling-machine"]["assembling-machine-2"].fluid_boxes) + for i, fb in pairs(data.raw["assembling-machine"]["burner-assembling-machine"].fluid_boxes) do + if i ~= "off_when_no_fluid_recipe" and fb.pipe_picture then + fb.pipe_picture.north.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-N.png" + fb.pipe_picture.north.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.png" + fb.pipe_picture.south.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-S.png" + fb.pipe_picture.south.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.png" + fb.pipe_picture.east.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-E.png" + fb.pipe_picture.east.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.png" + fb.pipe_picture.west.filename = "__bzchlorine__/graphics/entity/assembler/assembling-machine-2-pipe-W.png" + fb.pipe_picture.west.hr_version.filename = "__bzchlorine__/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.png" + end + end + end +end require("modules") diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-E.png b/graphics/entity/assembler/assembling-machine-2-pipe-E.png new file mode 100644 index 0000000..b0958b1 Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-E.png differ diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-E.xcf b/graphics/entity/assembler/assembling-machine-2-pipe-E.xcf new file mode 100644 index 0000000..949bedc Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-E.xcf differ diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-N.png b/graphics/entity/assembler/assembling-machine-2-pipe-N.png new file mode 100644 index 0000000..d39947b Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-N.png differ diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-N.xcf b/graphics/entity/assembler/assembling-machine-2-pipe-N.xcf new file mode 100644 index 0000000..839a34c Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-N.xcf differ diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-S.png b/graphics/entity/assembler/assembling-machine-2-pipe-S.png new file mode 100644 index 0000000..cb7e0eb Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-S.png differ diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-S.xcf b/graphics/entity/assembler/assembling-machine-2-pipe-S.xcf new file mode 100644 index 0000000..089db1c Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-S.xcf differ diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-W.png b/graphics/entity/assembler/assembling-machine-2-pipe-W.png new file mode 100644 index 0000000..3a903b3 Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-W.png differ diff --git a/graphics/entity/assembler/assembling-machine-2-pipe-W.xcf b/graphics/entity/assembler/assembling-machine-2-pipe-W.xcf new file mode 100644 index 0000000..b704d4e Binary files /dev/null and b/graphics/entity/assembler/assembling-machine-2-pipe-W.xcf differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.png b/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.png new file mode 100644 index 0000000..7eee131 Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.png differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.xcf b/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.xcf new file mode 100644 index 0000000..dab6af1 Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-E.xcf differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.png b/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.png new file mode 100644 index 0000000..1cf1f7c Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.png differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.xcf b/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.xcf new file mode 100644 index 0000000..29a2719 Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-N.xcf differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.png b/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.png new file mode 100644 index 0000000..287902a Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.png differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.xcf b/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.xcf new file mode 100644 index 0000000..ab58221 Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-S.xcf differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.png b/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.png new file mode 100644 index 0000000..710f7cd Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.png differ diff --git a/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.xcf b/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.xcf new file mode 100644 index 0000000..f9448e4 Binary files /dev/null and b/graphics/entity/assembler/hr-assembling-machine-2-pipe-W.xcf differ diff --git a/locale/en/salt.cfg b/locale/en/salt.cfg index 8f7fb8d..b042ec9 100644 --- a/locale/en/salt.cfg +++ b/locale/en/salt.cfg @@ -36,6 +36,7 @@ bzchlorine-recipe-bypass=Bypass recipes bzchlorine-list=Make a list of modified recipes bzchlorine-salt=Generate mineable salt patches bzchlorine-more-intermediates=Enable more chloride intermediates +bzchlorine-early-salt=How to get salt early game [mod-setting-description] bzchlorine-recipe-bypass=Skip modifying these recipes (comma-separated list). @@ -44,3 +45,6 @@ bzchlorine-list=If enabled, the text command [color=orange]BZList[/color] will d [string-mod-setting] bzchlorine-more-intermediates-no=No bzchlorine-more-intermediates-yes=Yes: Ferric chloride & vinyl chloride +bzchlorine-early-salt-assembler=In early assemblers (enable fluid inputs) +bzchlorine-early-salt-mining=A starting area patch to mine (requires minable salt patches) +bzchlorine-early-salt-both=Both of the above diff --git a/me.lua b/me.lua index 215f491..b8c27c6 100644 --- a/me.lua +++ b/me.lua @@ -3,6 +3,21 @@ local me = {} me.name = "bzchlorine" me.list = {} +function me.starting_patch() + return ( + me.get_setting("bzchlorine-early-salt") == "mining" or + me.get_setting("bzchlorine-early-salt") == "both" + ) +end + +function me.early_assemblers() + return ( + me.get_setting("bzchlorine-early-salt") == "assembler" or + me.get_setting("bzchlorine-early-salt") == "both" or + (not me.salt()) + ) +end + function me.more() if me.get_setting("bz-all-intermediates") then return true end return me.get_setting("bzchlorine-more-intermediates") == "yes" diff --git a/prototypes/salt.lua b/prototypes/salt.lua index a8d685a..4b95957 100644 --- a/prototypes/salt.lua +++ b/prototypes/salt.lua @@ -42,6 +42,7 @@ data:extend({ base_density = 3, base_spots_per_km2 = 2, regular_rq_factor_multiplier = 2.0, + has_starting_area_placement = util.me.starting_patch(), }, stage_counts = {15000, 9500, 5500, 2900, 1300, 400, 150, 80}, @@ -71,22 +72,24 @@ data:extend({ local richness = data.raw.resource["salt"].autoplace.richness_expression local probability = data.raw.resource["salt"].autoplace.probability_expression --- Modify salt autoplace richness: --- After 500 tiles it's standard --- After 300 tiles it scales up -data.raw.resource["salt"].autoplace.richness_expression = - richness * noise.if_else_chain( - noise.less_than(noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")), noise.to_noise_expression(500)), - (noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")) - 275)/475, - 1) +if not util.me.starting_patch() then + -- Modify salt autoplace richness: + -- After 500 tiles it's standard + -- After 250 tiles it scales up + data.raw.resource["salt"].autoplace.richness_expression = + richness * noise.if_else_chain( + noise.less_than(noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")), noise.to_noise_expression(500)), + (noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")) - 275)/475, + 1) -data.raw.resource["salt"].autoplace.probability_expression = - probability * noise.if_else_chain( - noise.less_than(noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")), noise.to_noise_expression(299)), - 0, - noise.less_than(noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")), noise.to_noise_expression(300)), - 0.3, - 1) + data.raw.resource["salt"].autoplace.probability_expression = + probability * noise.if_else_chain( + noise.less_than(noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")), noise.to_noise_expression(249)), + 0, + noise.less_than(noise.distance_from(noise.var("x"), noise.var("y"), noise.var("starting_positions")), noise.to_noise_expression(250)), + 0.3, + 1) +end end data:extend({ @@ -111,13 +114,27 @@ data:extend({ name = "salt", result = "salt", ingredients = {{type="fluid", name="water", amount=100}}, - enabled = false, - category = mods.Krastorio2 and "fluid-filtration" or "crafting-with-fluid", - energy_required = mods.Krastorio2 and 1 or 2, + enabled = not not mods["aai-industry"], + category = "crafting-with-fluid", + energy_required = 2, }, }) if mods.Krastorio2 then - util.add_unlock("kr-fluids-chemistry", "salt") -else - util.add_unlock("fluid-handling", "salt") + data:extend({ + { + type = "recipe", + name = "salt-filtration", + result = "salt", + ingredients = {{type="fluid", name="water", amount=100}}, + enabled = false, + category = mods.Krastorio2 and "fluid-filtration", + energy_required = 0.4, + }, + }) +end +if mods.Krastorio2 then + util.add_unlock("kr-fluids-chemistry", "salt-filtration") +end +if not mods["aai-industry"] then + util.add_unlock("automation", "salt") end diff --git a/settings.lua b/settings.lua index 36288fb..098f21c 100644 --- a/settings.lua +++ b/settings.lua @@ -5,24 +5,36 @@ data:extend({ setting_type = "startup", default_value = "", allow_blank = true, + order = "a", }, { type = "bool-setting", name = "bzchlorine-list", setting_type = "startup", default_value = false, + order = "b", }, { type = "bool-setting", name = "bzchlorine-salt", setting_type = "startup", default_value = true, + order = "c1", }, + { + type = "string-setting", + name = "bzchlorine-early-salt", + setting_type = "startup", + default_value = "assembler", + allowed_values = {"assembler", "mining", "both"}, + order = "c2", + }, { type = "string-setting", name = "bzchlorine-more-intermediates", setting_type = "startup", default_value = "yes", allowed_values = {"yes", "no"}, + order = "d", }, })