From f930a5412d1f088f4bc9503c82898b25fdd6f975 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 11 Oct 2025 00:56:19 +0200 Subject: [PATCH] 2.0.0 --- .editorconfig | 3 + .gitignore | 2 + Nylon2/LICENSE.md | 20 + Nylon2/README.md | 16 + Nylon2/changelog.txt | 65 ++ Nylon2/data-final-fixes.lua | 1 + Nylon2/data-updates.lua | 1 + Nylon2/data-util.lua | 930 ++++++++++++++++++ Nylon2/data.lua | 2 + Nylon2/graphics/icons/acetic-acid.png | Bin 0 -> 8986 bytes Nylon2/graphics/icons/adipic-acid.png | Bin 0 -> 3981 bytes Nylon2/graphics/icons/coal-tar.png | Bin 0 -> 3692 bytes Nylon2/graphics/icons/coke-powder.png | Bin 0 -> 2151 bytes .../icons/destructive-distillation.png | Bin 0 -> 6284 bytes .../icons/ethanolamine-air-scrubbing.png | Bin 0 -> 16996 bytes Nylon2/graphics/icons/ethanolamine.png | Bin 0 -> 9431 bytes Nylon2/graphics/icons/ethylene-glycol.png | Bin 0 -> 8958 bytes Nylon2/graphics/icons/ethylene-oxide.png | Bin 0 -> 9678 bytes .../graphics/icons/hexamethylenediamine.png | Bin 0 -> 4651 bytes Nylon2/graphics/icons/ketone-alcohol-oil.png | Bin 0 -> 4512 bytes Nylon2/graphics/icons/nylon-machine-parts.png | Bin 0 -> 5858 bytes Nylon2/graphics/icons/nylon.png | Bin 0 -> 5743 bytes Nylon2/graphics/icons/povidone.png | Bin 0 -> 10160 bytes Nylon2/graphics/icons/raw-graphite.png | Bin 0 -> 13616 bytes Nylon2/graphics/icons/vinyl-acetate.png | Bin 0 -> 7903 bytes Nylon2/info.json | 24 + Nylon2/locale/en/Nylon.cfg | 65 ++ Nylon2/prototypes/recipes.lua | 565 +++++++++++ Nylon2/prototypes/technology.lua | 163 +++ Nylon2/recipe-final-fix.lua | 3 + Nylon2/recipe-modify.lua | 64 ++ Nylon2/thumbnail.png | Bin 0 -> 8364 bytes README.md | 5 +- 33 files changed, 1928 insertions(+), 1 deletion(-) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 Nylon2/LICENSE.md create mode 100644 Nylon2/README.md create mode 100644 Nylon2/changelog.txt create mode 100644 Nylon2/data-final-fixes.lua create mode 100644 Nylon2/data-updates.lua create mode 100644 Nylon2/data-util.lua create mode 100644 Nylon2/data.lua create mode 100644 Nylon2/graphics/icons/acetic-acid.png create mode 100644 Nylon2/graphics/icons/adipic-acid.png create mode 100644 Nylon2/graphics/icons/coal-tar.png create mode 100644 Nylon2/graphics/icons/coke-powder.png create mode 100644 Nylon2/graphics/icons/destructive-distillation.png create mode 100644 Nylon2/graphics/icons/ethanolamine-air-scrubbing.png create mode 100644 Nylon2/graphics/icons/ethanolamine.png create mode 100644 Nylon2/graphics/icons/ethylene-glycol.png create mode 100644 Nylon2/graphics/icons/ethylene-oxide.png create mode 100644 Nylon2/graphics/icons/hexamethylenediamine.png create mode 100644 Nylon2/graphics/icons/ketone-alcohol-oil.png create mode 100644 Nylon2/graphics/icons/nylon-machine-parts.png create mode 100644 Nylon2/graphics/icons/nylon.png create mode 100644 Nylon2/graphics/icons/povidone.png create mode 100644 Nylon2/graphics/icons/raw-graphite.png create mode 100644 Nylon2/graphics/icons/vinyl-acetate.png create mode 100644 Nylon2/info.json create mode 100644 Nylon2/locale/en/Nylon.cfg create mode 100644 Nylon2/prototypes/recipes.lua create mode 100644 Nylon2/prototypes/technology.lua create mode 100644 Nylon2/recipe-final-fix.lua create mode 100644 Nylon2/recipe-modify.lua create mode 100644 Nylon2/thumbnail.png diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..bbf3e21 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,3 @@ +[*] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85e49ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +*.zip \ No newline at end of file diff --git a/Nylon2/LICENSE.md b/Nylon2/LICENSE.md new file mode 100644 index 0000000..ee22ee9 --- /dev/null +++ b/Nylon2/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2023 Timeken + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Nylon2/README.md b/Nylon2/README.md new file mode 100644 index 0000000..7db4260 --- /dev/null +++ b/Nylon2/README.md @@ -0,0 +1,16 @@ +# MetalsForYou + +## Version History +See changelog.txt + +## Created by + + +## Thanks to + +### Compatibility + + +### Localization + + diff --git a/Nylon2/changelog.txt b/Nylon2/changelog.txt new file mode 100644 index 0000000..01be669 --- /dev/null +++ b/Nylon2/changelog.txt @@ -0,0 +1,65 @@ +--------------------------------------------------------------------------------------------------- +Version: 0.5.2 +Date: 2024-07-24 + Features: + - Added ethanolamine to SE vitamelange spice. + - Upped nylon drive belt from 2 -> 8 +--------------------------------------------------------------------------------------------------- +Version: 0.5.1 +Date: 2024-07-16 + Features: + - Fixed conflict when using K2 but not bzcarbon. +--------------------------------------------------------------------------------------------------- +Version: 0.5.0 +Date: 2024-06-27 + Features: + - Added nylon drive belt if BrimStuff is installed. + - Fixed error when not using Cobalt mod. + - Fixed missing mod errors. +--------------------------------------------------------------------------------------------------- +Version: 0.4.3 +Date: 2024-01-21 + Features: + - Removed old unused files. +--------------------------------------------------------------------------------------------------- +Version: 0.4.2 +Date: 2024-01-14 + Features: + - Added SE delivery cannon recipe for fluids. +--------------------------------------------------------------------------------------------------- +Version: 0.4.1 +Date: 2024-01-06 + Features: + - Added coal tar solid fuel recipe. +--------------------------------------------------------------------------------------------------- +Version: 0.4.0 +Date: 2024-01-02 + Features: + - Added a new production chain for alternative lubricant and epoxy if K2 is installed. + - Increesed destructive distillation base craft time to 12 from 10. +--------------------------------------------------------------------------------------------------- +Version: 0.3.0 +Date: 2023-12-25 + Features: + - Added bio nitric acid recipe. + - Fixed Nylons K2 progression with few mods. +--------------------------------------------------------------------------------------------------- +Version: 0.2.0 +Date: 2023-12-24 + Features: + - Split cobalt into its own mod. + - Replaced 248k fiberer maker iron gear wheel with nylon machine parts. + - Replaced 248k compound machine iron gear wheel with nylon machine parts. + - Replaced K2 biusart lab copper cable with nylon machine parts. + - Replaced bobassembly electronics machine 2 steel gear wheel with nylon machine parts. + - Replaced aai industry stack filter inserter steel gear wheel with nylon machine parts. +--------------------------------------------------------------------------------------------------- +Version: 0.1.1 +Date: 2023-12-21 + Features: + - Added cobalt ore as a byproduct from nickel if If I Had A Nickel is installed. +--------------------------------------------------------------------------------------------------- +Version: 0.1.0 +Date: 2023-12-20 + Features: + - Alpha release. \ No newline at end of file diff --git a/Nylon2/data-final-fixes.lua b/Nylon2/data-final-fixes.lua new file mode 100644 index 0000000..b95c07f --- /dev/null +++ b/Nylon2/data-final-fixes.lua @@ -0,0 +1 @@ +local util = require("recipe-final-fix") \ No newline at end of file diff --git a/Nylon2/data-updates.lua b/Nylon2/data-updates.lua new file mode 100644 index 0000000..09f8c28 --- /dev/null +++ b/Nylon2/data-updates.lua @@ -0,0 +1 @@ +require("recipe-modify") \ No newline at end of file diff --git a/Nylon2/data-util.lua b/Nylon2/data-util.lua new file mode 100644 index 0000000..4b2d096 --- /dev/null +++ b/Nylon2/data-util.lua @@ -0,0 +1,930 @@ +local util = {} + +-- se landfill +-- params: ore, icon_size +function util.se_landfill(params) + if mods["space-exploration"] then + if not params.icon_size then params.icon_size = 64 end + local lname="landfill-"..params.ore + data:extend({ + { + type = "recipe", + icons = { + { icon = "__base__/graphics/icons/landfill.png", icon_size = 64, icon_mipmaps = 3 }, + { icon = "__Chromium2__/graphics/icons/"..params.ore..".png", icon_size = params.icon_size, scale = 0.33*64/params.icon_size}, + }, + energy_required = 1, + enabled=false, + name = lname, + category = "hard-recycling", + order = "z-b-"..params.ore, + subgroup = "terrain", + results = {{type="item", name="landfill", amount=1}}, + ingredients = {{type="item", name=params.ore, amount=50}}, + } + }) + util.add_unlock("se-recycling-facility", lname) + end +end + +-- se matter +-- params: ore, energy_required, quant_out, quant_in, icon_size, stream_out +function util.se_matter(params) + if not params.quant_in then params.quant_in = params.quant_out end + if not params.icon_size then params.icon_size = 64 end + local fname = "matter-fusion-"..params.ore + local sedata = mods["Krastorio2"] and "se-kr-matter-synthesis-data" or "se-fusion-test-data" + local sejunk = mods["Krastorio2"] and "se-broken-data" or "se-junk-data" + data:extend({ + { + type = "recipe", + name = fname, + localised_name = {"recipe-name.se-matter-fusion-to", {"item-name."..params.ore}}, + category = "space-materialisation", + subgroup = "materialisation", + order = "a-b-z", + icons = { + {icon = "__space-exploration-graphics__/graphics/blank.png", + icon_size = 64, scale = 0.5}, + {icon = "__space-exploration-graphics__/graphics/icons/fluid/particle-stream.png", + icon_size = 64, scale = 0.33, shift = {8,-8}}, + {icon = "__Chromium2__/graphics/icons/"..params.ore..".png", + icon_size = params.icon_size, scale = 0.33 * 64/params.icon_size, shift={-8, 8}}, + {icon = "__space-exploration-graphics__/graphics/icons/transition-arrow.png", + icon_size = 64, scale = 0.5}, + }, + energy_required = params.energy_required, + enabled = false, + ingredients = { + {type = "item", name = sedata, amount=1}, + {type="fluid", name="se-particle-stream", amount=50}, + {type="fluid", name="se-space-coolant-supercooled", amount=25}, + }, + results = { + {type = "item", name = params.ore, amount = params.quant_out}, + {type="item", name="se-contaminated-scrap", amount=1}, + {type="item", name=sedata, amount=1, probability=.99}, + {type="item", name=sejunk, amount=1, probability=.01}, + {type="fluid", name="se-space-coolant-hot", amount=25, ignored_by_productivity = 25, ignored_by_stats = 25}, + } + } + }) + util.add_unlock("se-space-matter-fusion", fname) + + if mods["Krastorio2"] then + local lname = params.ore.."-to-particle-stream" + data:extend({ + enabled = false, + { + type = "recipe", + name = lname, + localised_name = {"recipe-name.se-kr-matter-liberation", {"item-name."..params.ore}}, + category = "space-materialisation", + subgroup = "advanced-particle-stream", + order = "a-b-z", + icons = { + {icon = "__space-exploration-graphics__/graphics/blank.png", + icon_size = 64, scale = 0.5}, + {icon = "__space-exploration-graphics__/graphics/icons/fluid/particle-stream.png", + icon_size = 64, scale = 0.33, shift = {-8,8}}, + {icon = "__Chromium2__/graphics/icons/"..params.ore..".png", + icon_size = params.icon_size, scale = 0.33 * 64/params.icon_size, shift={8, -8}}, + {icon = "__space-exploration-graphics__/graphics/icons/transition-arrow.png", + icon_size = 64, scale = 0.5}, + }, + energy_required = 30, + enabled = false, + ingredients = { + {type="item", name="se-kr-matter-liberation-data", amount=1}, + {type="item", name=params.ore, amount=params.quant_in}, + {type="fluid", name="se-particle-stream", amount=50}, + }, + results = { + {type="item", name="se-kr-matter-liberation-data", amount=1, probability=.99}, + {type="item", name=sejunk, amount=1, probability=.01}, + {type="fluid", name="se-particle-stream", amount=params.stream_out, ignored_by_productivity = 50, ignored_by_stats = 50}, + } + } + }) + if not data.raw.technology["bz-advanced-stream-production"] then + data:extend({ + { + type = "technology", + name ="bz-advanced-stream-production", + localised_name = {"", {"technology-name.se-kr-advanced-stream-production"}, " 2"}, + icon = "__space-exploration-graphics__/graphics/technology/material-fabricator.png", + icon_size = 128, + effects = {}, + unit = { + count = 100, + time = 15, + ingredients = { + {"automation-science-pack", 1}, + {"logistic-science-pack", 1}, + {"chemical-science-pack", 1}, + {"se-rocket-science-pack", 1}, + {"space-science-pack", 1}, + {"production-science-pack", 1}, + {"utility-science-pack", 1}, + {"se-astronomic-science-pack-4", 1}, + {"se-energy-science-pack-4", 1}, + {"se-material-science-pack-4", 1}, + {"matter-tech-card", 1}, + {"se-deep-space-science-pack-1", 1}, + } + }, + prerequisites = {"se-kr-advanced-stream-production"}, + }, + }) + end + util.add_unlock("bz-advanced-stream-production", lname) + end +end + +-- Get the normal prototype for a recipe -- either .normal or the recipe itself +function util.get_normal(recipe_name) + if data.raw.recipe[recipe_name] then + recipe = data.raw.recipe[recipe_name] + if recipe.ingredients then + return recipe + end + end +end + +-- Set/override a technology's prerequisites +function util.set_prerequisite(technology_name, prerequisites) + local technology = data.raw.technology[technology_name] + if technology then + technology.prerequisites = {} + for i, prerequisite in pairs(prerequisites) do + if data.raw.technology[prerequisite] then + table.insert(technology.prerequisites, prerequisite) + end + end + end +end + +-- Add a prerequisite to a given technology +function util.add_prerequisite(technology_name, prerequisite) + local technology = data.raw.technology[technology_name] + if technology and data.raw.technology[prerequisite] then + if technology.prerequisites then + for i, pre in pairs(technology.prerequisites) do + if pre == prerequisite then return end + end + table.insert(technology.prerequisites, prerequisite) + else + technology.prerequisites = {prerequisite} + end + end +end + +-- Remove a prerequisite from a given technology +function util.remove_prerequisite(technology_name, prerequisite) + local technology = data.raw.technology[technology_name] + local index = -1 + if technology then + for i, prereq in pairs(technology.prerequisites) do + if prereq == prerequisite then + index = i + break + end + end + if index > -1 then + table.remove(technology.prerequisites, index) + end + end +end + + +-- Add an effect to a given technology +function util.add_effect(technology_name, effect) + local technology = data.raw.technology[technology_name] + if technology then + if not technology.effects then technology.effects = {} end + if effect and effect.type == "unlock-recipe" then + if not data.raw.recipe[effect.recipe] then + return + end + table.insert(technology.effects, effect) + end + end +end + +-- Add an effect to a given technology to unlock recipe +function util.add_unlock(technology_name, recipe) + util.add_effect(technology_name, {type="unlock-recipe", recipe=recipe}) +end + +-- remove recipe unlock effect from a given technology, multiple times if necessary +function util.remove_recipe_effect(technology_name, recipe_name) + local technology = data.raw.technology[technology_name] + local index = -1 + local cnt = 0 + if technology and technology.effects then + for i, effect in pairs(technology.effects) do + if effect.type == "unlock-recipe" and effect.recipe == recipe_name then + index = i + cnt = cnt + 1 + end + end + if index > -1 then + table.remove(technology.effects, index) + if cnt > 1 then -- not over yet, do it again + util.remove_recipe_effect(technology_name, recipe_name) + end + end + end +end + +-- Set technology ingredients +function util.set_tech_recipe(technology_name, ingredients) + local technology = data.raw.technology[technology_name] + if technology then + technology.unit.ingredients = ingredients + end +end + +function util.set_enabled(recipe_name, enabled) + if data.raw.recipe[recipe_name] then + data.raw.recipe[recipe_name].enabled = enabled + end +end + +function util.set_hidden(recipe_name) + if data.raw.recipe[recipe_name] then + data.raw.recipe[recipe_name].hidden = true + end +end + +-- Add a given quantity of ingredient to a given recipe +function util.add_or_add_to_ingredient(recipe_name, ingredient, quantity) + if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then + add_or_add_to_ingredient(data.raw.recipe[recipe_name], ingredient, quantity) + end +end + +function add_or_add_to_ingredient(recipe, ingredient, quantity) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, existing in pairs(recipe.ingredients) do + if existing[1] == ingredient or existing.name == ingredient then + add_to_ingredient(recipe, ingredient, quantity) + return + end + end + table.insert(recipe.ingredients, {ingredient, quantity}) + end +end + +-- Add a given quantity of ingredient to a given recipe +function util.add_ingredient(recipe_name, ingredient, quantity) + local is_fluid = not not data.raw.fluid[ingredient] + if data.raw.recipe[recipe_name] and (data.raw.item[ingredient] or is_fluid) then + add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity, is_fluid) + end +end + +function add_ingredient(recipe, ingredient, quantity, is_fluid) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, existing in pairs(recipe.ingredients) do + if existing.name == ingredient then + return + end + end + if is_fluid then + table.insert(recipe.ingredients, {type="fluid", name=ingredient, amount=quantity}) + else + table.insert(recipe.ingredients, {type = "item", name = ingredient, amount = quantity}) + end + end +end + +-- Add a given ingredient prototype to a given recipe +function util.add_ingredient_raw(recipe_name, ingredient) + if data.raw.recipe[recipe_name] and (data.raw.item[ingredient.name] or data.raw.item[ingredient[1]]) then + add_ingredient_raw(data.raw.recipe[recipe_name], ingredient) + end +end + +function add_ingredient_raw(recipe, ingredient) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, existing in pairs(recipe.ingredients) do + if (existing.name and existing.name == ingredient.name) then + return + end + end + table.insert(recipe.ingredients, ingredient) + end +end + +-- Set an ingredient to a given quantity +function util.set_ingredient(recipe_name, ingredient, quantity) + if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then + set_ingredient(data.raw.recipe[recipe_name], ingredient, quantity) + end +end + +function set_ingredient(recipe, ingredient, quantity) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, existing in pairs(recipe.ingredients) do + if existing.name == ingredient then + existing.amount = quantity + existing.amount_min = nil + existing.amount_max = nil + return + end + end + table.insert(recipe.ingredients, {ingredient, quantity}) + end +end +-- Add a given quantity of product to a given recipe. +-- Only works for recipes with multiple products +function util.add_product(recipe_name, product) + if data.raw.recipe[recipe_name] and + (data.raw.item[product.name] or data.raw.fluid[product.name]) then + add_product(data.raw.recipe[recipe_name], product) + end +end + +function add_product(recipe, product) + if recipe ~= nil then + if recipe.results == nil then + recipe.results = {} + end + table.insert(recipe.results, product) + end +end + +-- Get the amount of the ingredient, will check base/normal not expensive +function util.get_ingredient_amount(recipe_name, ingredient_name) + local recipe = data.raw.recipe[recipe_name] + if recipe then + if recipe.ingredients then + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name == ingredient_name then return ingredient.amount end + end + end + return 1 + end + return 0 +end + +-- Get the amount of the result, will check base/normal not expensive +function util.get_amount(recipe_name, product) + if not product then product = recipe_name end + local recipe = data.raw.recipe[recipe_name] + if recipe then + if recipe.results then + for i, result in pairs(recipe.results) do + if result.name == product then return result.amount end + end + end + return 1 + end + return 0 +end + +-- Replace one ingredient with another in a recipe +-- Use amount to set an amount. If that amount is a multiplier instead of an exact amount, set multiply true. +function util.replace_ingredient(recipe_name, old, new, amount, multiply) + if data.raw.recipe[recipe_name] and (data.raw.item[new] or data.raw.fluid[new]) then + replace_ingredient(data.raw.recipe[recipe_name], old, new, amount or 1, multiply) + end +end + +function replace_ingredient(recipe, old, new, amount, multiply) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, existing in pairs(recipe.ingredients) do + if existing.name == new then + return + end + end + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name == old then + ingredient.name = new + if multiply then + ingredient.amount = amount * ingredient.amount + else + ingredient.amount = amount + end + end + end + end +end + +-- Remove an ingredient from a recipe +function util.remove_ingredient(recipe_name, old) + if data.raw.recipe[recipe_name] then + remove_ingredient(data.raw.recipe[recipe_name], old) + end +end + +function remove_ingredient(recipe, old) + index = -1 + if recipe ~= nil and recipe.ingredients ~= nil then + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name == old then + index = i + break + end + end + if index > -1 then + table.remove(recipe.ingredients, index) + end + end +end + +-- Replace an amount of an ingredient in a recipe. Keep at least 1 of old. +function util.replace_some_ingredient(recipe_name, old, old_amount, new, new_amount) + local is_fluid = not not data.raw.fluid[new] + if data.raw.recipe[recipe_name] and (data.raw.item[new] or is_fluid) then + replace_some_ingredient(data.raw.recipe[recipe_name], old, old_amount, new, new_amount, is_fluid) + end +end + +function replace_some_ingredient(recipe, old, old_amount, new, new_amount, is_fluid) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, existing in pairs(recipe.ingredients) do + if existing.name == new then + return + end + end + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name == old then + ingredient.amount = math.max(1, ingredient.amount - old_amount) + end + end + add_ingredient(recipe, new, new_amount, is_fluid) + end +end + +-- set the amount of a product. +function util.set_product_amount(recipe_name, product, amount) + if data.raw.recipe[recipe_name] then + set_product_amount(data.raw.recipe[recipe_name], product, amount) + end +end + +function set_product_amount(recipe, product, amount) + if recipe then + if recipe.result_count then + recipe.result_count = amount + end + if recipe.results then + for i, result in pairs(recipe.results) do + if result.name == product then + if result.amount then + result.amount = amount + end + if result.amount_min ~= nil then + result.amount_min = nil + result.amount_max = nil + result.amount = amount + end + end + if result[1] == product then + result[2] = amount + end + end + end + if not recipe.results and not recipe.result_count then + -- implicit one item result + recipe.result_count = amount + end + end +end + +-- multiply the cost, energy, and results of a recipe by a multiple +function util.multiply_recipe(recipe_name, multiple) + if data.raw.recipe[recipe_name] then + multiply_recipe(data.raw.recipe[recipe_name], multiple) + end +end + +function multiply_recipe(recipe, multiple) + if recipe then + if recipe.energy_required then + recipe.energy_required = recipe.energy_required * multiple + end + if recipe.result_count then + recipe.result_count = recipe.result_count * multiple + end + if recipe.results then + for i, result in pairs(recipe.results) do + if result.name then + if result.amount then + result.amount = result.amount * multiple + end + if result.amount_min ~= nil then + result.amount_min = result.amount_min * multiple + result.amount_max = result.amount_max * multiple + end + if result.catalyst_amount then + result.catalyst_amount = result.catalyst_amount * multiple + end + end + if result[1] then + result[2] = result[2] * multiple + end + end + end + if not recipe.results and not recipe.result_count then + -- implicit one item result + recipe.result_count = multiple + end + if recipe.ingredients then + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name then + ingredient.amount = ingredient.amount * multiple + end + if ingredient[1] then + ingredient[2] = ingredient[2] * multiple + end + end + end + end +end + +-- Returns true if a recipe has an ingredient +function util.has_ingredient(recipe_name, ingredient) + return data.raw.recipe[recipe_name] and + has_ingredient(data.raw.recipe[recipe_name], ingredient) +end + +function has_ingredient(recipe, ingredient) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, existing in pairs(recipe.ingredients) do + if existing[1] == ingredient or existing.name == ingredient then + return true + end + end + end + return false +end + +-- Remove a product from a recipe, WILL NOT remove the only product +function util.remove_product(recipe_name, old) + if data.raw.recipe[recipe_name] then + remove_product(data.raw.recipe[recipe_name], old) + end +end + +function remove_product(recipe, old) + index = -1 + if recipe ~= nil and recipe.results ~= nil then + for i, result in pairs(recipe.results) do + if result.name == old or result[1] == old then + index = i + break + end + end + if index > -1 then + table.remove(recipe.results, index) + end + end +end + +function util.set_main_product(recipe_name, product) + if data.raw.recipe[recipe_name] then + set_main_product(data.raw.recipe[recipe_name], product) + end +end + +function set_main_product(recipe, product) + if recipe then + recipe.main_product = product + end +end + +-- Replace one product with another in a recipe +function util.replace_product(recipe_name, old, new) + if data.raw.recipe[recipe_name] then + replace_product(data.raw.recipe[recipe_name], old, new) + end +end + +function replace_product(recipe, old, new) + if recipe then + if recipe.main_product == old then + recipe.main_product = new + end + if recipe.result == old then + recipe.result = new + return + end + if recipe.results then + for i, result in pairs(recipe.results) do + if result.name == old then result.name = new end + if result[1] == old then result[1] = new end + end + end + end +end + +-- Remove an element of type t and name from data.raw +function util.remove_raw(t, name) + if not data.raw[t] then + log(t.." not found in data.raw") + return + end + if data.raw[t][name] then + for i, elem in pairs(data.raw[t]) do + if elem.name == name then + data.raw[t][i] = nil + break + end + end + end +end + +-- Set energy required +function util.set_recipe_time(recipe_name, time) + if data.raw.recipe[recipe_name] then + set_recipe_time(data.raw.recipe[recipe_name], time) + end +end + +function set_recipe_time(recipe, time) + if recipe then + if recipe.energy_required then + recipe.energy_required = time + end + end +end + +-- Multiply energy required +function util.multiply_time(recipe_name, factor) + if data.raw.recipe[recipe_name] then + multiply_time(data.raw.recipe[recipe_name], factor) + end +end + +function multiply_time(recipe, factor) + if recipe then + if recipe.energy_required then + recipe.energy_required = recipe.energy_required * factor + end + end +end + +-- Add to energy required +function util.add_time(recipe_name, amount) + if data.raw.recipe[recipe_name] then + add_time(data.raw.recipe[recipe_name], amount) + end +end + +function add_time(recipe, amount) + if recipe then + if recipe.energy_required then + recipe.energy_required = recipe.energy_required + amount + end + end +end + +-- Set recipe category +function util.set_category(recipe_name, category) + if data.raw.recipe[recipe_name] and data.raw["recipe-category"][category] then + data.raw.recipe[recipe_name].category = category + end +end + +-- Set recipe subgroup +function util.set_subgroup(recipe_name, subgroup) + if data.raw.recipe[recipe_name] then + data.raw.recipe[recipe_name].subgroup = subgroup + end +end + +-- Set item subgroup +function util.set_item_subgroup(item, subgroup) + if data.raw.item[item] and data.raw["item-subgroup"][subgroup] then + data.raw.item[item].subgroup = subgroup + end +end + +function util.add_icon(recipe_name, icon) + if data.raw.recipe[recipe_name] then + if not (data.raw.recipe[recipe_name].icons and #(data.raw.recipe[recipe_name].icons) > 0) then + data.raw.recipe[recipe_name].icons = {{ + icon=data.raw.recipe[recipe_name].icon, + icon_size=data.raw.recipe[recipe_name].icon_size, + icon_mipmaps=data.raw.recipe[recipe_name].icon_mipmaps, + }} + data.raw.recipe[recipe_name].icon = nil + data.raw.recipe[recipe_name].icon_size = nil + end + table.insert(data.raw.recipe[recipe_name].icons, icon) + end +end + +-- Set recipe icons +function util.set_icons(recipe_name, icons) + if data.raw.recipe[recipe_name] then + data.raw.recipe[recipe_name].icons = icons + data.raw.recipe[recipe_name].icon = nil + data.raw.recipe[recipe_name].icon_size = nil + end +end + +-- Set recipe icons +function util.set_item_icons(item_name, icons) + if data.raw.item[item_name] then + data.raw.item[item_name].icons = icons + data.raw.item[item_name].icon = nil + data.raw.item[item_name].icon_size = nil + end +end + +-- Gets an item or fluid icon +function util.get_item_or_fluid_icon(name) + icon = "" + if data.raw.item[name] then + icon = data.raw.item[name].icon + if not icon then icon = data.raw.item[name].icons[1].icon end + elseif data.raw.fluid[name] then + icon = data.raw.fluid[name].icon + if not icon then icon = data.raw.fluid[name].icons[1].icon end + end + return icon +end + +function util.set_to_founding(recipe) + util.set_category(recipe, "founding") + util.set_subgroup(recipe, "foundry-intermediate") +end + +-- Add crafting category to an entity +function util.add_crafting_category(entity_type, entity, category) + if data.raw[entity_type][entity] and data.raw["recipe-category"][category] then + for i, existing in pairs(data.raw[entity_type][entity].crafting_categories) do + if existing == category then + return + end + end + table.insert(data.raw[entity_type][entity].crafting_categories, category) + end +end + +function util.add_to_ingredient(recipe, ingredient, amount) + if data.raw.recipe[recipe] then + add_to_ingredient(data.raw.recipe[recipe], ingredient, amount) + end +end + +function add_to_ingredient(recipe, it, amount) + if recipe ~= nil and recipe.ingredients ~= nil then + for i, ingredient in pairs(recipe.ingredients) do + if ingredient.name == it then + ingredient.amount = ingredient.amount + amount + return + end + if ingredient[1] == it then + ingredient[2] = ingredient[2] + amount + return + end + end + end +end + +function util.add_to_product(recipe_name, product, amount) + if data.raw.recipe[recipe_name] then + add_to_product(data.raw.recipe[recipe_name], product, amount) + end +end + +function add_to_product(recipe, product, amount) + if recipe ~= nil and recipe.results ~= nil then + if recipe.result == product then + recipe.result_count = recipe.result_count + amount + return + end + for i, result in pairs(recipe.results) do + if result.name == product then + result.amount = result.amount + amount + return + end + if result[1] == product then + result[2] = result[2] + amount + return + end + end + end +end + +-- Adds a result to a mineable type +function util.add_minable_result(t, name, result) + if data.raw[t] and data.raw[t][name] and data.raw[t][name].minable then + if data.raw[t][name].minable.result and not data.raw[t][name].minable.results then + data.raw[t][name].minable.results = { + {data.raw[t][name].minable.result ,data.raw[t][name].minable.count}} + data.raw[t][name].minable.result = nil + data.raw[t][name].minable.result_count = nil + end + if data.raw[t][name].minable.results then + table.insert(data.raw[t][name].minable.results, result) + end + end +end + +function util.remove_prior_unlocks(tech, recipe) + if data.raw.technology[tech].prerequisites then + for i, prerequisite in pairs(data.raw.technology[tech].prerequisites) do + remove_prior_unlocks(prerequisite, recipe) + end + end +end + +function remove_prior_unlocks(tech, recipe) + local technology = data.raw.technology[tech] + if technology then + util.remove_recipe_effect(tech, recipe) + if technology.prerequisites then + for i, prerequisite in pairs(technology.prerequisites) do + -- log("BZZZ removing prior unlocks for " .. tech ..", checking " .. prerequisite) -- Handy Debug :| + remove_prior_unlocks(prerequisite, recipe) + end + end + end +end + +function util.replace_ingredients_prior_to(tech, old, new, multiplier) + if not data.raw.technology[tech] then + log("Not replacing ingredient "..old.." with "..new.." because tech "..tech.." was not found") + return + end + util.remove_prior_unlocks(tech, old) + for i, recipe in pairs(data.raw.recipe) do + if (recipe.enabled and recipe.enabled ~= 'false') + and (not recipe.hidden or recipe.hidden == 'true') -- probably don't want to change hidden recipes + and string.sub(recipe.name, 1, 3) ~= 'se-' -- have to exlude SE in general :( + then + -- log("BZZZ due to 'enabled' replacing " .. old .. " with " .. new .." in " .. recipe.name) -- Handy Debug :| + util.replace_ingredient(recipe.name, old, new, multiplier, true) + end + end + if data.raw.technology[tech].prerequisites then + for i, prerequisite in pairs(data.raw.technology[tech].prerequisites) do + replace_ingredients_prior_to(prerequisite, old, new, multiplier) + end + end +end + +function replace_ingredients_prior_to(tech, old, new, multiplier) + local technology = data.raw.technology[tech] + if technology then + if technology.effects then + for i, effect in pairs(technology.effects) do + if effect.type == "unlock-recipe" then + -- log("BZZZ replacing " .. old .. " with " .. new .." in " .. effect.recipe) -- Handy Debug :| + util.replace_ingredient(effect.recipe, old, new, multiplier, true) + end + end + end + if technology.prerequisites then + for i, prerequisite in pairs(technology.prerequisites) do + -- log("BZZZ checking " .. prerequisite) -- Handy Debug :| + replace_ingredients_prior_to(prerequisite, old, new, multiplier) + end + end + end +end + +function util.remove_all_recipe_effects(recipe_name) + for name, _ in pairs(data.raw.technology) do + util.remove_recipe_effect(name, recipe_name) + end +end + +function util.add_unlock_force(technology_name, recipe) + util.set_enabled(recipe, false) + util.remove_all_recipe_effects(recipe) + util.add_unlock(technology_name, recipe) +end + +-- sum the products of a recipe +function util.sum_products(recipe_name) + -- this is going to end up approximate in some cases, integer division is probs fine + if data.raw.recipe[recipe_name] then + local recipe = data.raw.recipe[recipe_name] + if not recipe.results then return recipe.result_count end + local sum = 0 + for i, result in pairs(recipe.results) do + local amt = 0 + if result[2] then amt = result[2] + elseif result.amount then amt = result.amount + elseif result.amount_min then amt = (result.amount_min + result.amount_max)/2 + end + if result.probability then amt = amt * result.probability end + sum = sum + amt + end + return sum + end + return 0 +end + +function util.add_productivity(recipe) + data.raw.recipe[recipe].allow_productivity = true +end + +return util \ No newline at end of file diff --git a/Nylon2/data.lua b/Nylon2/data.lua new file mode 100644 index 0000000..d30056f --- /dev/null +++ b/Nylon2/data.lua @@ -0,0 +1,2 @@ +require("prototypes.recipes") +require("prototypes.technology") \ No newline at end of file diff --git a/Nylon2/graphics/icons/acetic-acid.png b/Nylon2/graphics/icons/acetic-acid.png new file mode 100644 index 0000000000000000000000000000000000000000..d102065aed7f740398d7fdb561af8f51e6f6c0b9 GIT binary patch literal 8986 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 literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/coal-tar.png b/Nylon2/graphics/icons/coal-tar.png new file mode 100644 index 0000000000000000000000000000000000000000..bb3cc0a23ec1c3f4520154ba2d5c16a7b505b4ad GIT binary patch literal 3692 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 KMNUMnLSTYrWtuPm literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/coke-powder.png b/Nylon2/graphics/icons/coke-powder.png new file mode 100644 index 0000000000000000000000000000000000000000..270fcfafbb9beaf6032067e44938482ae77fd14a GIT binary patch literal 2151 zcmbuA`9BkmAICRyZJEu@Y|OC(b8ODJ#~5Omm8F#9)8R~xuaHP`L@9&_Whi|LNp4xL z z;S>}Ul$DiLR8$NN4Rv&M)YR0Jl$4~UrNza?O-xJ-3=BvllDfLOtgNhrgajN8mz0#W zu&~h5(!%5MXfzsuKuAeR!C){X5~;1Nt)ZcT!C+KXRYgQZP$-n5qN0q9jF^}h1Og!v ziBKr?$dMytGFeVe4h#m%%gY-X8HtLD3JD2eu~;sF4`ul7_5 zlSNy}@eE@dNhcM8y#(O}EGv{s;w@rIj$otBh4j0TzYY#YkjOfmZsBC(=-61nRnN*$ zJeSShyg#ziHtfuC<~%zfdToF2+gM88gT;?@u)jnH#QoS5+Een{4wyFbPV`Bfh$Fl= zAA|v%Dc@Tz8C*@b&vaQ^AKLgC6DyqO3~SE~%6Ccku?kt_w+P*4FTgS~u1Qp)a$WP! zBF&=~R~5`{uN;JLH;j|_eO8d9jO=W92oR+)1y(R`>Nx{||M09Hm;BwWwvjJP_X7!2 zPDnN0-mGoep~vw(D=MA|$A#Ay7xVn+7q9|Kr`BuIKN^o9zhkBf%1Z2Eh$+u~DCrs;=IUJKG4icZ6e@ z5e$SH_@v_fHR+|T0soKk({9z{D+#SJ|L)BuR*hSGC^`D8!ey}1?L8E=M_kOiSPQ2# z>!!AXfoPDaPyy#t;(nD2zKgfc}vSsN|cMtibQKAPQ zIDTXYBND67_~XNFeemiWKJA8I%4|Ypcevj1GQ!&zLmrEvdSTbAeWg~UIhv3(Q}w#4 zJ2NHU>H4;K+%3zHX{JMFNF~3kn|u3uO*W$oa{jR-?Z|X0>Su&l?6FmHOtBAKkOg7r@vLp4az}zYM zN)wI8gQtx@rCUeNI1JX_@*3kRG~hK`p4zEg^i;F{@ZuQ1kDW^idL!j+S&lz)F1)T4 zmEWvu&-U(ZnE;+)9REtrqv2pfrn{yiZb*rn!dg&f3F9MuO!RtPU8AG_gYvYd3!WuB z6Le?buco3Ujq|wq8Dv(Pjt7L2u7{ZJu<$Gh9gN}K-@}MK-@|U z*|*^~!-2@NT6ctN*|{O|Xic?s@>L(lUN7lS_!y1%NttouokY3&$$C$9f-+7lDP8}j zO0#~>fX=ws*c;{??|Vnr1-_nsy~53(dO1CREW3ssxkYN<7!&C}pi+zoi@Cx+? zDw|bUq~RB_-({wBg?gzEzT@8suQ=Hqf9HM_0wHUcSa9`0{@vY$$;IDep3QyO@+B=>kf#w;=4@3i`A!(RJ1x_=85CR`mj6&%X}J7e za+z4ed}((C-~Pk$VR*&8JV(QxRpWkQBJ)&`1>W;uQ}o~50@ewY{ua~QHMdFHT_t70 zBj9&Ew=~F1twEj_p%uSz`WIXvPiW0 zln=mv{ferIcM`lZk7MM`LXV0h_Sn{UwzD#R0OVRM-TUL!xa!qcKv#?hS!ftm%AJ2t zt;i5DlLBTDyn2Q3R8R+1p0v%|3|w2gTIeJL+v#C2Z}NBLTk2aA`zih0>D-zL*>Bbw zM|G{vSktZvT|Dvp!@a>cT4nEmURRf$G$X7+RV}#>t0Q5yznzjUjo#UF<+WIjE zlFI6bYSUs0x3-_@g%6Qgj=x1N4@D!u-48mJFL2HJLD1Nd0aPijq1@j#>vCW7!!=-i zRduGrb7Rc1S7%qg>^gb%bwe9hs?YX{jgE&aAbKEb(l{H`-yEy*9V){S(DCE}av7)Cx?;buufV~Z!T508# F@INBJ)ad{K literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/destructive-distillation.png b/Nylon2/graphics/icons/destructive-distillation.png new file mode 100644 index 0000000000000000000000000000000000000000..98cab49ada087ff468950a67d5429f8178a771c9 GIT binary patch literal 6284 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 a0R4?;hZiKi!H+vDfQE{Wa=oHW^#1{z0*Ofg literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/ethylene-oxide.png b/Nylon2/graphics/icons/ethylene-oxide.png new file mode 100644 index 0000000000000000000000000000000000000000..6db14ed8650aabb83c6fb6799bd47c47351fb175 GIT binary patch literal 9678 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 O1t`g>$<|4mhyEX1Nd&9_ literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/hexamethylenediamine.png b/Nylon2/graphics/icons/hexamethylenediamine.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c03e3fd9c321efdf115eb195b5e8f67d7f857c GIT binary patch literal 4651 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 literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/nylon.png b/Nylon2/graphics/icons/nylon.png new file mode 100644 index 0000000000000000000000000000000000000000..4e735b40bda018d7c8a0325e884ba4661e2040cc GIT binary patch literal 5743 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 literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/povidone.png b/Nylon2/graphics/icons/povidone.png new file mode 100644 index 0000000000000000000000000000000000000000..3930c0534cafb77504d373114e49e70711081383 GIT binary patch literal 10160 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 WrmTjnAO81c2T)dgr%)kh8u&jCWPT|C literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/raw-graphite.png b/Nylon2/graphics/icons/raw-graphite.png new file mode 100644 index 0000000000000000000000000000000000000000..47371ad52614a002e73601d741af56ec16c58450 GIT binary patch literal 13616 zcmWlgc{r5a8^>)?WG0n;8B*y@CE2$b5n61$DrC))$}kwR4HFXCBay+7LT{K*gki`Y zV?^1RvCY_-#V}@!pWh$nIoJ8?T-WnF_kDl9_xGIFw$>J+!ZN};^F`(BzxrkL&s;_o1Y#geYlsFXP)$@^u98*;m7yt)RX+??yc{9(;iDn zF%`%i{jL2Bt|2{ov}L4r<~wsH?BQp~^2AP*8-?A7p@gTePS<0psW8Ka#dl8D3P=t$ z>i{>~+k*o35Tc`u5MT5xn`F1Cl^yzzHNtJE1T*V@KB(~PtWwMwuy0a1tU1rU_p8m* z>JXj0b^*v5O^2eBymqCANU0y4lyOgoJiX=)9`y?%5S7RAr=M@aa4phqG3lPqa~7k; zuKX&?)5IyHEnB)t7E7%^UGWF<>cr)1y1qjFZMb=0v>8t59WG>k%PNEHFPBw=BG;<3 zEI?7gStukOMKok>B|s2Cl!8!ytn6!}H{8?(dgWX$#4zmI{M7L@?bhw2fV+?8+|J^T zLbmN7i!bia)tM0+pl<9`7-IgMP53W6S1h7f@^T?HTh<7~H({>)AVt9Z^0ZwuYiXSAv%v<=VcdE}6e#Hka7v;e5VHVL;1xz+aPu7esEr z(UG))&=&f;GVu0iVqMh|q#3}fTwRG8rcqyYMv7;f*#w$VBA20cgT&Bk=JS~T#Wn-XRP{dO4aPBFcrcK$l8H%^M{{zWP zn`szJ$sK|_4q;_MmW7ebiwjN?`{SK^wSCOW)mC)7#S!gLCmlhKhbFARU-V}>YeuN> z742#)ZVgvGhQlq5O6-FUH{5k|Vdd`uR;|BL$LOkE?LY`ttIKF-3LdmG9g3a`B}Sn( zW|#+7a?C)70t;F)!+KF?h-XwpqO?$TUkJG+gsusLxe9IBkL*fHMs;UmW+!F^I?ZCz zJVML0j`hEBJ-t~FQ-R&R1~XJZ`r^Uf#U3}8&gUrP!+496 z$y=%EhP0jr(UPzABEe#oTvwGQKq2mRd*1IdiTyZl`p(Ew13&k%4h8XDh1;|0 z-46Cfj@wr`j~7P1ZBH%A$K9VQ-+wQ-`ykdDwGEB>OZp7?9(J&Jv41tw%srpuUoC$V z@kjqF>Lw7W20u!bDZ?D2jh_(OSG%-F7;WPYMO4v_nv0&G^^N=mx_%}R9LUV&;<+zw z`zyUZVEX&@G~UQ**-reJOKD^kFDW9e%#@DaeT}w#3HiPR!<=b`Q|o+|{2P+YM`a@9 z9%NK0>W3}!$YR~)I|(!T(j;CzSKn4tbY)Wzf7J6kWa^6BrM+~?eL?xXWzD%_1&`S6 z{v*_4M?>T;hXO&;;?)qdnwu)J9&L_+?)Uh7^qnVnIi@6?#+SZWON|t+q_?R+Du>kx{sXl(Dz2Uh-`a;I zHoG6l9Xsf1jLlg-MO`vq2htw>5%5xSTDU^}DcQ2MAdU&^?4_d*IO}?*K$XY^xJTEq zZpM|LpF(-kCI%HYqc$U9j@!FUzMcoaCrEasg$<(hPi243V?5q|48NwlV$2JPH9{iU z{@{5?pudg#%J~G&&p*eKDdKqGr3kO)pRClX2aV8FG1B*Xa%FnVG`x_WpOu5-EUK)g zH5%FfkUqV0O>S6kg2yfp=C#kP$L%jLCt*m!L_f0D!RB|TUyak=jT&u&P|d)>pIZ_S zH^axR2Lnk@R{mV@cwspF&-pz3Nk|3j^6IS_gLmr?7Xl3zTR$4JOfXcq`1k_)SZHic z^O`rRVn^yHcqEl{MwWx}=h>av+@F~oeay`g{LldM*HIz3 zW=NiCBVBR6H?HcgX@66KdS2b)OXL_)V`R7S@6m&KTJ4eZs>rKoz3b8G)JHTbHg9XI zLb`?VNlpH2_Zwg?UAFCefkJDHSK2v=k*5L5mwcL-Ovd(!tq2a3hK6av{}b$O)rIr0Z2(>yd_=ktv9`HMrW9Za zI@Rq#@3<`3J(ANv{y*;Wizn?9d^yt(`ZN^bdNZ>;q3dSRJiQS&g$2D{=ajq3v z=52=7ByaUeR^}@Z{5O?%HN zhA=X1eg=jGl7*ou1Pl9YQANa!dh&H`{nwX&mBt+#??hk2Ix@(t!n#H0OP$)7_kGIG zK&wim7U|F~%N*dne%m#2B3RQJ*Qtg4o$MM+%Nxa#Q}F7RjxA}kmi(>Wzew{0gN+~a z|EWGSIoVel*9{YZ--9b&i~rnIIjln#fj%A(bGq8qS4c<#dp;!SLif(5M_)rUcAo76 z^@J`@;Vuh~#dE@~+_K`|3!Pa7JTe2-{iJOvG(h*q*vO5DAEQW1vuwvfU_)R*NsB*^F(;m8U z9~1GHS@8#J32Py-O5M^3Xyy}Up8 zMZEoHH=P&lCGA&%=PgL`b)5@?`VHEbr`U3Webmo)_5tRsbQh{BylSZ(KhdFraJS`5 z`<~~^keVRm1p_aCNcsLbUuz+m9mBWyk1GP^5$h_J=`6t#DH1jZ$}8d^WUv6>-OV z>FNgR5ViO2Wgm ztPl~}fRP1OG9(6P(W1&s@j(NoDrb6p^t(PIxAsYSkY}kw{B=~mgE`uI72g6g!-gi4 zJp%=RDZD6x0a^VmK>@1#;~TGHr&=^MS%t`5C(a0Ny2yroQ`G)&%;eT&K1DRI6)s>k zE9|Z#qOBu^zI>+L?y9~^Wtg}cs!)-4{6?d>K4Nf_RGGeP@W9{flfgIX66YLOGljJ8PJ=}}2C5o7zE)m1TEQRQm;r#4|FnwSgIj~w@2byZ zsLHGUyLBNBgom7*iYb^|o!Udry3N?Tq|IBlOciJ+hdk%vSORfkujH|R5ppD>ycf3z zKXhxANOhvl>L6PFn}qF;z%J8K{18sOEce0Is_RZ;7J7diZ4^#q&xF#3A^XENIQB*p zB=S&1wA|zWQJHQz&||pJd46s@>`20bt4y(JwN~rj_dL;!-R^PSCD) zRG|?L=u&}AWz+%ZS?pxgCByyt^u7Q~%9K;vKeLdLhf{_!A@bkkTm*LrHNh`*Dyz+{=wi%MoYXwl~UD)O=hI zGL@aobm&yJ=uCr*GKP~$W7zGN=Z)oSoSK~e6YPOVB`+#wuu{<0STd)GF{s`_Ts2p; zAM18tBz1BleK~02{zfPfj8n~BH_Hv8!$oaPx<;<^-@|IT25v8$z|DyNmZn@gq zeEU3?LFl%-rWoozO!2-z{urdQ^Ku};A?R{w2Qre6+G#q@4@%AAbMbB2?V;pvUPsGM zP=4#r$Q)t+_NKRN9&k62f45sMYQs^wqdZ4mXrHKne@hCvPu1il+4lf6+2M&rxx2k7 zfT>xh(VMKB7N)0_As52;PI``ws-LUUlZ^CEF~*%Ftf^T=p^ zEwE?NPqhmYh4*!ZuWJVgL=xxP8U&9X2k-*&RayWeZT*7AVZx8?$QK&IQRR;&oO?Dc zH6dOupT`sJcuRs_jkE$P@bciTV~a-Db#S)+>*t84!tVOIYs5fy1X2+M8NT=7`n;RA zaY*mxOB@^Gc2%hS*-;Pejl2G+?&P?LRp2=iV`&JNYZ8I`&mVV2!X}fh)N2B0e?2s&GY` z4pKvR-WsUO@ek^}(|r@Tq_i5wB7}nbhQ}U#6w){dd*&?g-FWaOlb%IbIJ%T!|7{u6Lv}eT zccamW^Z!6}Xj38lKqqIpCd8I*RJ>M~=2MQYdCkbQ0=bL!y8rDlNQR9`2z?|TT~5#t zHP+2;555;O>N#Mf`gu70<+<{sY##cH$jnf&>r76uurx2E{7cF@^kjzTAJgp7z3K1I zuGS$Ig@8lSJU-l&3s?(zL_le|<95DtAc0as9q2I(!Q8oL`39B{ zwE=hH6R!3D47|iu7IsokHAcH$dqTf^gh(jfzVTd9qQE%x-y#*E2F)F_Y{#31_qc0X zx5BSS_DV`Ozqi9aQ&*pVqqIsE14Sx)Q)4~(dgbGsijx|ez`e{eVa4z7F)B$$kNMgp zl_yCTyGC8TcC`YePB{r}M!5%YPlnoyn&YUEL!u3^MP?1t;ZT znBJEj2&DmcU1pbkvaC64F!>mPd-rWq|#Y|GYR;yvfboL}C-iBB1Z zopgAE-mdTox1hwxwD!C@-e{JinVS<#54MGI2kRx8@Xt?-M1E|ycD{qpR%UhyhUW_7V zM0QkkWutScyaQ^|6Mb~<>2pt7&1m&fE*}v_V8>6Q~8}V6LX13R5mhb%l$fjev z`1CzuRVUC5;kxBLJ%|svP^}7VABbQWYn}_g;MSusA@WtJUG+f_ykp>qCMZ)9bOrk2 zb1+>P_IG2 z77GVciwtoGQTt$Bnv`zW6AL=c(!~5iv01Bvu$u+vA&$P$WB+|gwzX<++br>QvvDpE zS)9sM(_Mlcrs%KTngXwcKLx11`LZBBfbF21KkL*z7qY0Fpq_;n9Ewj$87w!^5y#P^;D_t8@qTaB8oiiuN$C75^2)d0O&wkIN(a;#&E8K4TcNOX%zKD0 zObWD(^|Us`4jM(jCV;?o$IKocbIJaZ`Zg?m-P|za!uV8JXZljj>WG_CYDRj}1Kz1$ z^vUU0kRlO=7`OltdFFyb#;mUZlC@Ucwj;n4YCtEuw2;F(?{tM?Wn^glivsHwR)`%! zyr=??Q~6ek;7?8w^lJ5#mP;i%O*qSC#9YueNQOk9fYEVggY z@J7px;m;(HgJUpIm9flf^pneA*$A*EZJ<~U9}%`S9n&IyNdc7zR$zyXyosu(Fo*Rc zTXWFK-ECi#74&X{W=$iVu?dncY=gQZ5u@$z1z&iYXN{t+_m~<({2rPly&#uX49}_} zyOK82=8`lwd16GLi6WY=WyMsRh#Mqk0j(Y?Tcd+(P|?(BZ@HEPq0|?R^aa@plum4e z!;`K=A6#+%&^%5`#)A-NI)zc2(XtR4L>;E5dr9s2)*YT}$8L&#O$zV)5>v&|9x5JL zWND%CJhh6{vS=E@Bwm@|69i5Y8(Q?8xt;m~y%}bkmNn{pYI}w!vA6z5)}OAwQ>JtM zA^)XDW-X&W7(1Nugl{G^ys@^bvk1}apuTFYd&9{xQ*!*lDDx1xN?ozX z?JYFn*iH3wl_q--Bsb2iUiXAyf`(3YnXoXcOQ+t^lS8{n77pl9$eK=j6Bqi`E3bmw zpQAoUFwMom8J!Of)Zc=h;bbVha1 zV-@DlK7q#78Y@Z1YLjhSXB&s)f2dCVb$K&32ruf?+6)|dG%B#@abxk+CwosR-{T2H zB#-xk4rtK|Hu2KbPkY}}(LipZ&fhgPCD9druW;E5*~-*wO$&87Olp8qW%_GEG_!Ux zEX)!a=Eu4I8qatA*u$)I=+~$+%oBNRcc5p`b7AK;R#3pgRS`ch{lWuqso})xmYOxb zSb9py5b-VD>#DDKuOHdovT<1`x<~PSbr(A18e0DmelsUB;uNEFqoYBvr%l~r&|Gfp zHb+)%;Tk8U^Ki zKDMh2luv0cTJ!NsV-X~JX2g58wp z%qnqUZ7AWf9G?LVYeiJcNEoAu=l?0>0%@D{;KEmoePxjozeCR1pQ^o%r|DHEY_?XQ ztu_)g$=zN|cnyQBfA5d+1Lu~M;N2|HJrNEgHat8madK6Px@)rd^L+E?_JpRHw@38t zh&Mr{8!`mV*8DQ~aUa#%fcHULLB|k6dO_TaJ#uwQn3r_4rP%_u!xGO=jZrz$E%p4F0b6crS9VP+hUP@Ps}mZ20l)l%xqg zi>sdh^u>FJW0oDNUqdI~ahbzZ?e4mwW!`9QfKi^J>hn-Oq1d_lv>Z{QhQtRuYqGJ= zui}t~ML4Y8e%0L?v{b@TqA_m)yWS?o6zfE9 z9dX5~p5&zkx0XiST5K@2ee3V(hs9fhG@|3L?QZ8bYB z?e@vDGui8sSBjhz8U2m9Ynn-7piJrE0=mq9&gU1~5vO4#Rb2PfXBD=FOx9|zTZDOy zX;fW!xT7S&*~m6`n~xq&Ug1ZQYY9B?he5$lR><+6fR+%<7TZe?3+=BU#MX zZ}t282+taInZzC}Pn|76WLk`r$MQ`BUK)MWc>`m+oL53b_=*_FLM0Eh=ioh+9s4vA4c{gXaH{Bm^c zq+^TR%kc6Z`Ms7gacwraw{0R{E&Afw7A;UGUi+i(4Hktk{j2=eR_P_kFo+!_%+!Dj z>MwVq_08X=1@?lRTIwcg4DnLJYdrHR#B2Z_+&}14at^1>%)bA!^4~CV(H{EZgBkNJ zXRCcAe^@6W!oVkL!W~d_)_n81rvfPcJyt(DHtgT>M6m0K zfX0L21t3!L3IOAJgKBUfgNw3?x;YvlAxdhbh>`s%QQe?(d1 z-A|pd77wlf{ZizIP~bC%yPQh-_juTh(AMJ<6|KN4duNSmgdJNw;iy4l^K^D}-#ObP$MCVh|$VkCvW(;y-i~_krQ>v5@@F zjKj)2aYM1!iQg@#T)HC0)ptI>jK7zRsG<{P7Al^~gTs$#4?T4;^gUY^%zO?%t2V+A zBHsmnh(jXFR}a2H9Hw*!G3&eS^^kyWFZ0Zfm34vbva75 z#a;n$sg0;2j5-N7M>%wk??b|}3in!fBHSEoajJw4w6RKk2 zhtQjVp+|96dF=3Th|T7taSNdyCh#XhLHFcgxYb`tU*=Z>wJOLZoewF4I|OIOAoxIQ z!@WCyFiK=4le$O}KO{9Q5lEt3-BD;gq%2y`VZ1(l5&P5IJZWC!G###4Sw z)VeRGqJvv`jybIEq)vU48hRulaAz!dqBS}WpQ>wg}zDiZzp@KVBpm02NAo~+cOTQ07hEwa15b0L9@5J1$~ zt|i;LA`Ed$z?sPDY^dd4W<}ga@P5}!f(x-MYV&D zq41qX5e|D*k#nG1w)AYl)9vl+C_o19aC^vb4~j1?kxmhw8*dh)YN3)2$a9%W@S4N^HAr0lTNzEa?j6cm(}(rRE}GSO zD#4n)H24O4qTne^Ai?wKijODKhS{caypm|4G>V+sZw0qR@sj zqWY3>*$o-~8~1Gq;>3_PE5h_NSCpuozkskZd2IDgF3Ik0N$~jVyZ#rVTjr?za2(9H+v$qS6xH9o)o6#^<#T-&?Rm{sCfm}w4uvK0gd;sXQb_>3XebV za`&0Jzk)o~JfCI&#<~95msFjRwI4!0lK<1)^b302+bOVBF1t@|_>PeNJ+_H>%0bj@ zvfsdY;t9+YO_FxUM>{559UJ_YWPXjRtPhoK(>>PljslK$U^?;3Wi8I1fg1cM98%Xs zpq5gz04R+16My)HhS5y|l1s;NV-KAyG?s;jaWU9;^=Aj6pZuOirHTfU#v&}X7q=Ng#YiA?!{q&9m1ZZwofAII=>#I|m3@GJg{_Gp9kG<{8 zpR4@!X_4oZ*Iwf8(`K9j(!7z-g}Wtqe$=v4g&qa>^F5_x>Y1hfn~)P_rUld(1xKJA z84(*Ul$|; ztw`f9s`0_O2(|slk=X7MCvWT z_TI*Yr)r^iuea3jM_L0C8q^k}Cl;hiZF1qe?})<8PbY5G*jYZocbTVVYIkiGx%X~3 zVJ%cm4iPWyu2>5FihJ6UV$buFg}a>{wPfXRb^SF)s~oQRMYz>>3)W(s|JOnRMyso$ zBRDgTRS0YLKtQz!Oxd*^qh1Q}bfL=M5*q{3j7^AKd z-0@M|23v772&zzuCc8&hnh6EDPZ@{|KTS(LY4>MW`M0R{BP*Y2Glhpj9MUD8eMEnI zIz`%m{TbsxFEVhysv^`lV&}S+;ikEr^faG6J83#*h{%W(O@_D~``CTHc}~3DwJkzT zb_?>FJGaRh*pz!WI#mJ`#$m(6m_>PCR0Z@q}r+Q&kd{Y#y z8jr8`$ISwLVHFv+Vos)3H5TEeFnP#=5NtDapm&GKjMKNg2_%dawjK6qwjvcWtkrAN z$Icoou$Dfc_lI&?f@dRnVz_2BxF}DP@g%~7_BduziliK~N|q_MGGYvxrW@^&;tG%Y z`(D$R*NvoCMfe6avf|eIK8^Lxn+B%P?mxMy;SI4{i1RKDoaZ@Glm(IfT!iK_%0Re? z?G+>OR7hxc_}|)f7tNOzIoJ;b4>OnhtP7Ymn%eUQZ-eR`@e0=3SA&J!9_*B6HRd;7 zr(nnj7#wLPz`6#o<;HiiWpR67aCWhI>UdX%-ZU!8~|B*;JOe(H4m zM$Yl?X*!;7Pob%g`azB~wA(z9lkLXJhP^ZGQQOk!P7atB{BitT6A^LD{)P5gJ>@94 z_Wv!d_inQB!Do7eWWji9VtTkfn-qF2Ur4?lYZZ!lqlWhU;%@LNbKx3jmrvc4) z>`Gl~`?YA7yo0G+ChXJH4rpB;?OM8)SIq-UdC6p$fUEGt82BpWqy_nj|A<`w=w<4E zq2f`6F9_%_b>ZAvA-XU>wduYElpi&IY1n>GslW&_%^5;rcz&j|omX%`m1W6u-^QQY zIm?1gN32$EI^e0?o#xFb)YYcoGOL@EYxz%kbRP%5DT%#}KyF{m)SD!S>~zfeh4K(p zmmXLXa*cGilClowhSkwlclkd6qFpN&z4}|k$YWS%cN&Y-L^%EIDCa0>E+={F7i?F9 z)&FagBC+4+3xw1wT*NW|e}WDrH&mdvemw!PvbKFF9W6cPq<~X(lP7|CQr+Q|bdC8- zEM{bTq2hY-qXA^2))5ljw_s|_^w{ls)0=9#0vtwbqp79@azn$lI<hT2AqtJJajfZv;~i zmZg6m|FR3XGJeT}kk|K#?}59vyza9&@dMkb^{Py{*_gl;v#+E4fyvb*l?jlmukPY- z%+pgq09C<-7CE}xro~=YE92pzmx!rg0$o__9+4W(wYcXyq=1;5@TwXfO>~;+w zz;;i|SyCkR!iG^Z!L*V3mJpP|*;@~KlGf|WcZH3+b@#y(JpxO^cRzX+V5c#7&d1l! zTEQ(puU%$+o-fkM6xiW2sf$XDiY^Kv#fg$I4hPWj{YYPK%_nwJHYj3ot~rdV8;+p5 zjQck1ug^&4aE6m9ln0Rdt|p1inRCdB{ETM;6nzxkE)@btzRxxNGQz$#wdQ@UmBkLRINwL4LK zwYF;$pv$oXy0z4lY`L~gR-pAga9tkqjh3p% z^-%vkkxBonE9=q4qwn#yUBD4+T%b~l`5b!O%MMJT$h@f4+i25$A8sQ+g`Te|Y{{^? zc!LvHMYvWEQM;Y)7C*YJ1(+N^Zq9TEA4_WM;%!(AHAeV;ockogN>L-ukqzYXLit^2 zL8@-be@KkHWHVQIzhQrG>Iwicx-o03^Ii-+W!SvS zkc36*y)|sgX!&rzLVIFN$qFp1j6S5yM7OsDkKy0OiBUrDTuI2^4F<+~t>4U^4L1g^ zB*bm{ZCKTC(_a}49b<2&k}UbQ@AYd08L$gyQ~kMjCKw0sI& zQIAB}`1{zTJmO%ZNf`m+CLdtGq_7y&LzU~1a4}*&xSDuf2=ZQ6s3~<~I2tzoduM~_ z3SfstTB7=b3Ddk)6e*_uVfPl-WMqv`l|Ho3pC8pwPv7kGuU0tF4e#7AHU*y+fUMZI z8&-T)IsZ#gPt(f%##K04yKDTckaU*?{hw~=m~ss>vma5lZ1vHTaUj{iFUQZ?zUp~o z_4T0#NWIoAZ6gm)*bI#`=`5eeQ}vDE0sucM$m*8Lvnnp>lbmg1*M@PoVwy@6ZYL5KT0D?S%AiPts6Ryya4}zX zUM-+G3o7*xF_B#tEo~USrIg1vH0D0Z&1s&W(eok75WJ*v#}!~6f1i|OB?NJ891f** z(JrUyDLD8h#v_APE9>{d>r(5}HTLBgHYgt8V*oGVz;BnDj^zA-_4uEed5dSwbSqdK z5L;V+dv_@rfq?9IjJ9K7MQT{m?*bkIBGrDxb6Mmacc-QpSo`BHsXLpj{^RE>M465C zXr2wtpFNiq>hOq`qQT5VJ`z13XBs8isC*EiDfd}K6eoMerulHtyB#WkeA#YBlvvub z^B&0J=gd-#u}o{92~4c%q`_$gvOiW0yd9Wo>WBuKLJvq)4V@J+7i% z*8sv>n0PxVe7@tC*~x?155Q85f855U7m0ZT)$L{TThmN6em1JpOxvkNXObr;W&_IC zIi}O5AZ%I}tl%ufkWJn$ykA5an(i+B62@8VdwATl<^1E>yL;r|zGs!XFgzco0r;i9eAZ@Il(J;JE|bP#a& z)VF0}p3bk@7sqCAtj79;z3e8mG*NTrpf5CXz z#og~aE@kNb7x2X)^a}H!Wd!D+k8%C>k4$5b!P~eePC5z8#6&W0f=5>IKc1$~TS1j9 zH%A5#6u$6geai+`sHDWTc3qMrwF;zvOD4N|Dmy72fxv{T4e`*ODWVD z?ar81cRr8OrN?K;9&7CW*6>7Oi}Q{oJG1p_J@uq-5k=AX_i5=;ObAc?WqI5!_Nc^x z&E-bF-p8N;XIRMmuV6 zI@e)bXq1ZY-8rAQH=^M$qGH)}fKdefxWsJ0y!=j$;=S@SRiNRxLM&%gojbn-Kw~)B$^1_WovD%>`kGn2 z+DxBBGvDQApXa2$O%Fe$C96Am=Y1#Ld|=u)_%GX_$&T12!!#5+9%MCApNDa7sA-Nz zS>MD+!H=`Ivts6cnzh)-k{tMK9{<~|eLRdTyf-o0@|=CZXJ{DgZ6z=CP}wrNMP?^= zuXU$buP#Ja^G~VHYk&N)7JkxT)Jc8F7lK>hm7m@bUXtUWESFNG@{dlPNVVH%oz+@X z&j*%(jqYL(g}-&-4wmA#AR-Uw&h8wD=~q?H2uTEZyMFTOtZ3N1S{64)2af9p*#9uy z5g5oW#HfgP?B7DnB<`yhln{jrlXOsH+fXVgcfhO~n@-Yr_5b2FiG4N3ezvBlQsFB> zFAoXWoq1~ln99=mBk#HL6a6w&nz>gA8v%Ze@zgW=EE-@mjiQDeA2)EfA{~eZBy7dl zE-dEl99c4BJkowq?>2o-|B1aWO(4zCD6D4Z`zS1`HacyVjL6UDK$=#JZNEMHyKs2R PiRYG?^^GbM_t^gdp%^pB literal 0 HcmV?d00001 diff --git a/Nylon2/graphics/icons/vinyl-acetate.png b/Nylon2/graphics/icons/vinyl-acetate.png new file mode 100644 index 0000000000000000000000000000000000000000..348c374af760f2830fe63992820e5b3d8472a22d GIT binary patch literal 7903 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 literal 0 HcmV?d00001 diff --git a/Nylon2/info.json b/Nylon2/info.json new file mode 100644 index 0000000..cf80fa9 --- /dev/null +++ b/Nylon2/info.json @@ -0,0 +1,24 @@ +{ + "name": "Nylon2", + "version": "2.0.0", + "factorio_version": "2.0", + "title": "Nylon", + "author": "Timeken, cackling fiend", + "homepage": "https://discord.gg/ufvFUJtVwk", + "dependencies": [ + "base >= 2.0.0", + "? 248k-Redux", + "? aai-industry", + "? bobassembly", + "? BrimStuff-Updated", + "? bzcarbon", + "? bzchlorine", + "? bzgas", + "? Cobalt2", + "? IfNickel-Updated", + "? Limestone2", + "? Krastorio2", + "? space-exploration" + ], + "description": "This mod adds nylon and some chemical intermediates. \n\nThis mod is inspired by Brevven's BZ mods." +} \ No newline at end of file diff --git a/Nylon2/locale/en/Nylon.cfg b/Nylon2/locale/en/Nylon.cfg new file mode 100644 index 0000000..b6dd48b --- /dev/null +++ b/Nylon2/locale/en/Nylon.cfg @@ -0,0 +1,65 @@ +[technology-name] +nylon-processing=Nylon processing +synthetic-graphite=Synthetic graphite +organic-chemistry=Organic chemistry +nylon-drive-belt=Nylon drive belt + +[technology-description] + +[autoplace-control-names] + +[item-name] +adipic-acid=Adipic acid +nylon=Nylon +cobalt-ore=Cobalt ore +cobalt-plate=Cobalt plate +nylon-machine-parts=Nylon machine parts +raw-graphite=Raw graphite +coke-powder=Coke powder +povidone=Povidone + +[item-description] +povidone=Polyvinylpyrrolidone + +[fluid-name] +ketone-alcohol-oil=Ketone alcohol oil +hexamethylenediamine=Hexamethylenediamine +coal-tar=Coal tar +ethylene-oxide=Ethylene oxide +acetic-acid=Acetic acid +vinyl-acetate=Vinyl acetate +ethanolamine=Ethanolamine +ethylene-glycol=Ethylene glycol + +[fluid-description] +ketone-alcohol-oil=Cyclohexanone +ethylene-glycol=Used to make antifreeze + +[entity-name] + +[mod-setting-name] + +[mod-setting-description] + +[recipe-name] +ketone-alcohol-oil=Ketone-alcohol oil +hexamethylenediamine=Hexamethylenediamine +destructive-distillation=Destructive distillation +adipic-acid=Adipic acid +nylon=Nylon +raw-graphite=Raw graphite +synthetic-graphite=Synthetic graphite +coke-powder=Coke powder +bio-nitric-acid=Bio nitric acid +ethylene-oxide=Ethylene oxide +acetic-acid=Acetic acid +vinyl-acetate=Vinyl acetate +ethanolamine=Ethanolamine +povidone=Povidone +povidone-lubricant=Povidone lubricant +ethanolamine-air-scrubbing=Ethanolamine air scrubbing +ethylene-glycol=Ethylene glycol +solid-fuel-coal-tar=Solid fuel coal tar +nylon-drive-belt=Nylon drive belt + +[recipe-description] \ No newline at end of file diff --git a/Nylon2/prototypes/recipes.lua b/Nylon2/prototypes/recipes.lua new file mode 100644 index 0000000..9df0c52 --- /dev/null +++ b/Nylon2/prototypes/recipes.lua @@ -0,0 +1,565 @@ +local util = require("data-util") +if mods["space-exploration"] then + data:extend({{ + type = "item-subgroup", + name = "chemical", + group = "resources", + order = "a" + }}) +else + data:extend({{ + type = "item-subgroup", + name = "chemical", + group = "intermediate-products", + order = "a" + }}) +end + +local ketone_alcohol_oil_ingredients = {{type="item", name="coal", amount = 5}, (data.raw.fluid["hydrogen"] and { type = "fluid", name = "hydrogen", amount = 10 }) or ({ type = "fluid", name = "water", amount = 10 }), (data.raw.item["cobalt-plate"] and {type="item", name="cobalt-plate", amount = 1}) or {type="item", name="iron-plate", amount=1}} + +if mods["bzgas"] then + ketone_alcohol_oil_ingredients = {{type="item", name="phenol", amount = 5}, (data.raw.item["cobalt-plate"] and {type="item", name="cobalt-plate", amount = 1}) or {type="item", name="iron-plate", amount=1}} + if data.raw.fluid["hydrogen"] then + table.insert(ketone_alcohol_oil_ingredients, { type = "fluid", name = "hydrogen", amount = 10 }) + end +end + +local fuel_refining_category = "chemistry" +local fuel_refining_subgroup = "chemical" +if mods["space-exploration"] then + fuel_refining_category = "fuel-refining" + fuel_refining_subgroup = "fuel" +end + +data:extend({ + { + type = "fluid", + name = "ketone-alcohol-oil", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/ketone-alcohol-oil.png", + icon_size = 64, icon_mipmaps = 4, + order = "k" + }, + { + type = "recipe", + name = "ketone-alcohol-oil", + icon = "__Nylon2__/graphics/icons/ketone-alcohol-oil.png", + icon_size = 64, + main_porduct = "ketone-alcohol-oil", + category = "chemistry", + order = "k", + enabled = false, + energy_required = 5, + ingredients = ketone_alcohol_oil_ingredients, + subgroup = "chemical", + results = {{ type = "fluid", name = "ketone-alcohol-oil", amount = 30 }, (data.raw.item["cobalt-plate"] and {type = "item", name ="cobalt-plate", amount=1, probability=0.4}) or {type = "item", name ="iron-plate", amount=1, probability=0.4}}, + }, + { + type = "fluid", + name = "ethylene-oxide", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/ethylene-oxide.png", + icon_size = 128, icon_mipmaps = 4, + order = "c" + }, + { + type = "fluid", + name = "acetic-acid", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/acetic-acid.png", + icon_size = 128, icon_mipmaps = 4, + order = "c" + }, + { + type = "fluid", + name = "vinyl-acetate", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/vinyl-acetate.png", + icon_size = 128, icon_mipmaps = 4, + order = "v" + }, + { + type = "fluid", + name = "ethanolamine", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/ethanolamine.png", + icon_size = 128, icon_mipmaps = 4, + order = "v" + }, + { + type = "item", + name = "povidone", + icon = "__Nylon2__/graphics/icons/povidone.png", + icon_size = 128, + subgroup = "chemical", + order = "p", + stack_size = 100, + }, + { + type = "fluid", + name = "ethylene-glycol", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/ethylene-glycol.png", + icon_size = 128, icon_mipmaps = 4, + order = "e" + }, + { + type = "recipe", + name = "ethylene-oxide", + icon = "__Nylon2__/graphics/icons/ethylene-oxide.png", + icon_size = 128, + main_porduct = "ethylene-oxide", + category = "chemistry", + subgroup = "chemical", + order = "n", + enabled = false, + energy_required = 30, + ingredients = {(data.raw.fluid["biomethanol"] and { type = "fluid", name = "biomethanol", amount = 50 }) or { type = "fluid", name = "light-oil", amount = 50 }, (data.raw.fluid["chlorine"] and { type = "fluid", name = "chlorine", amount = 50 }) or { type = "fluid", name = "water", amount = 50 }}, + results = {{ type = "fluid", name = "ethylene-oxide", amount = 50 }, { type = "fluid", name = "acetic-acid", amount = 50 }}, + } +}) + +local vinyl_acetate_ingredients = {{ type = "fluid", name = "acetic-acid", amount = 25 },(data.raw.fluid["oxygen"] and { type = "fluid", name = "oxygen", amount = 25 }) or { type = "fluid", name = "water", amount = 25 }} +if data.raw.item["palladium-plate"] then + table.insert(vinyl_acetate_ingredients, {type="item", name="palladium-plate", amount=1}) +end +local vinyl_acetate_results = {{ type = "fluid", name = "vinyl-acetate", amount = 50 }} +if data.raw.item["palladium-plate"] then + table.insert(vinyl_acetate_results, {type = "item", name ="palladium-plate", amount=1, probability=0.8}) +end + +data:extend({ + { + type = "recipe", + name = "vinyl-acetate", + icon = "__Nylon2__/graphics/icons/vinyl-acetate.png", + icon_size = 128, + main_porduct = "vinyl-acetate", + category = "chemistry", + subgroup = "chemical", + order = "v", + enabled = false, + energy_required = 5, + ingredients = vinyl_acetate_ingredients, + results = vinyl_acetate_results, + }, + { + type = "recipe", + name = "povidone", + icon = "__Nylon2__/graphics/icons/povidone.png", + icon_size = 128, + category = "chemistry", + subgroup = "chemical", + order = "p", + enabled = false, + energy_required = 5, + ingredients = {{ type = "fluid", name = "vinyl-acetate", amount = 25 }}, + results = {{type="item", name="povidone", amount=10}}, + }, + { + type = "recipe", + name = "povidone-lubricant", + icons = { + { icon = "__base__/graphics/icons/fluid/lubricant.png", icon_size = 64}, + { icon = "__Nylon2__/graphics/icons/povidone.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, + }, + category = "chemistry", + subgroup = "chemical", + order = "p", + enabled = false, + energy_required = 3, + ingredients = {{ type = "fluid", name = "water", amount = 10 }, {type="item", name="povidone", amount=2}}, + results = {{ type = "fluid", name = "lubricant", amount = 10 }}, + }, + { + type = "recipe", + name = "ethanolamine", + icon = "__Nylon2__/graphics/icons/ethanolamine.png", + icon_size = 128, + category = "chemistry", + subgroup = "chemical", + order = "e", + enabled = false, + energy_required = 4, + ingredients = {{ type = "fluid", name = "ethylene-oxide", amount = 10 }, (data.raw.fluid["ammonia"] and { type = "fluid", name = "ammonia", amount = 10 }) or { type = "fluid", name = "water", amount = 10 }}, + results = {{ type = "fluid", name = "ethanolamine", amount = 20 }}, + }, + { + type = "recipe", + name = "ethanolamine-air-scrubbing", + icon = "__Nylon2__/graphics/icons/ethanolamine-air-scrubbing.png", + icon_size = 128, + main_porduct = "coal", + category = "chemistry", + subgroup = "chemical", + order = "e", + enabled = false, + energy_required = 30, + ingredients = {{ type = "fluid", name = "ethanolamine", amount = 10 }}, + results = {{type="item", name="coal", amount=5}, {type = "item", name ="sulfur", amount=1, probability=0.05}}, + }, + { + type = "recipe", + name = "ethylene-glycol", + icon = "__Nylon2__/graphics/icons/ethylene-glycol.png", + icon_size = 128, + category = "chemistry", + subgroup = "chemical", + order = "e", + enabled = false, + energy_required = 6, + ingredients = {{ type = "fluid", name = "water", amount = 25 }, { type = "fluid", name = "ethylene-oxide", amount = 25 }}, + results = {{ type = "fluid", name = "ethylene-glycol", amount = 50 }}, + }, + { + type = "recipe", + name = "solid-fuel-coal-tar", + icons = { + { icon = "__base__/graphics/icons/solid-fuel.png", icon_size = 64}, + { icon = "__Nylon2__/graphics/icons/coal-tar.png", icon_size = 64, scale=0.3, shift= {-8, -8}}, + }, + category = fuel_refining_category, + subgroup = fuel_refining_subgroup, + order = "b[fluid-chemistry]-e[solid-fuel]", + enabled = false, + energy_required = 1, + ingredients = {{ type = "fluid", name = "coal-tar", amount = 20 }}, + results = {{type="item", name="solid-fuel", amount=1}}, + }, + { + type = "item", + name = "adipic-acid", + icon = "__Nylon2__/graphics/icons/adipic-acid.png", + icon_size = 64, + subgroup = "chemical", + order = "a", + stack_size = 100, + } +}) + +local adipic_acid_ingredients = {{ type = "fluid", name = "ketone-alcohol-oil", amount = 10 }} +if data.raw.fluid["kr-nitric-acid"] then + table.insert(adipic_acid_ingredients, { type = "fluid", name = "kr-nitric-acid", amount = 10 }) +end +local adipic_acid_results = {{type="item", name="adipic-acid", amount=5}} +if data.raw.fluid["depleted-acid"] then + table.insert({ type = "fluid", name = "depleted-acid", amount = 10 }) +end + +local hexamethylenediamine_ingredients = {{ type = "fluid", name = "petroleum-gas", amount = 10 }, (data.raw.item["cobalt-plate"] and {type="item", name="cobalt-plate", amount = 1}) or {type="item", name="iron-plate", amount=1}} +if data.raw.fluid["ammonia"] then + table.insert(hexamethylenediamine_ingredients, { type = "fluid", name = "ammonia", amount = 10 }) +end +local hexamethylenediamine_results = {{ type = "fluid", name = "hexamethylenediamine", amount = 10 }, (data.raw.item["cobalt-plate"] and {type = "item", name ="cobalt-plate", amount=1, probability=0.4}) or {type = "item", name ="iron-plate", amount=1, probability=0.4}} +if data.raw.fluid["chemical-waste"] then + table.insert(hexamethylenediamine_results, { type = "fluid", name = "chemical-waste", amount = 10 }) +end + +local destructive_distillation_ingredients = {{type="item", name="coal", amount=10}} +if data.raw.item["phenol"] then + table.insert(destructive_distillation_ingredients, {type="item", name="phenol", amount=5}) +end +local destructive_distillation_results = {{ type = "fluid", name = "coal-tar", amount = 20 }} +if data.raw.fluid["ammonia"] then + table.insert(destructive_distillation_results, { type = "fluid", name = "ammonia", amount = 10 }) +end +if data.raw.item["kr-coke"] then + table.insert(destructive_distillation_results, {type="item", name="kr-coke", amount=7}) +end + +data:extend({ + { + type = "recipe", + name = "adipic-acid", + icon = "__Nylon2__/graphics/icons/adipic-acid.png", + icon_size = 64, + main_porduct = "adipic-acid", + category = "chemistry", + subgroup = "chemical", + order = "a", + enabled = false, + energy_required = 10, + ingredients = adipic_acid_ingredients, + results = adipic_acid_results, + }, + { + type = "fluid", + name = "hexamethylenediamine", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/hexamethylenediamine.png", + icon_size = 64, icon_mipmaps = 4, + order = "h" + }, + { + type = "recipe", + name = "hexamethylenediamine", + icon = "__Nylon2__/graphics/icons/hexamethylenediamine.png", + icon_size = 64, + main_porduct = "hexamethylenediamine", + category = "chemistry", + subgroup = "chemical", + order = "h", + enabled = false, + energy_required = 5, + ingredients = hexamethylenediamine_ingredients, + results = hexamethylenediamine_results, + }, + { + type = "fluid", + name = "coal-tar", + default_temperature = 25, + max_temperature = 100, + auto_barrel = true, + base_color = { r = 0.50, g = 0.50, b = 0.50 }, + flow_color = { r = 0.50, g = 0.50, b = 0.50 }, + gas_temperature = 25, + icon = "__Nylon2__/graphics/icons/coal-tar.png", + icon_size = 64, icon_mipmaps = 4, + order = "c" + }, + { + type = "recipe", + name = "destructive-distillation", + icon = "__Nylon2__/graphics/icons/destructive-distillation.png", + icon_size = 64, + main_porduct = "ammonia", + category = "chemistry", + subgroup = "chemical", + order = "a", + enabled = false, + energy_required = 12, + ingredients = destructive_distillation_ingredients, + results = destructive_distillation_results, + } +}) +util.add_productivity("destructive-distillation") + +if mods["Krastorio2"] then + local bio_nitric_acid_ingredients = {{ type = "fluid", name = "coal-tar", amount = 10 }, { type = "fluid", name = "water", amount = 10 }, {type="item", name="wood", 10}} + if data.raw.item["limestone"] then + table.insert(bio_nitric_acid_ingredients, {type="item", name="limestone", amount=4}) + end + + data:extend({ + { + type = "recipe", + name = "bio-nitric-acid", + icons = { + { icon = "__Krastorio2Assets__/icons/fluids/nitric-acid.png", icon_size = 64}, + { icon = "__base__/graphics/icons/wood.png", icon_size = 64, scale=0.3, shift= {-8, -8}}, + }, + main_porduct = "kr-nitric-acid", + category = "chemistry", + subgroup = "chemical", + order = "n", + enabled = false, + energy_required = 12, + ingredients = bio_nitric_acid_ingredients, + results = {{ type = "fluid", name = "kr-nitric-acid", amount = 10 }}, + } + }) +if mods["bzchlorine"] then + local ethylene_oxide_epoxy_ingredients = {{ type = "fluid", name = "ethylene-oxide", amount = 10 }} + if mods["Limestone2"] then + table.insert(ethylene_oxide_epoxy_ingredients, {type="item", name="quicklime", amount=4}) + end + + data:extend({ + { + type = "recipe", + name = "ethylene-oxide-epoxy", + icons = { + { icon = "__bzchlorine__/graphics/icons/epoxy.png", icon_size = 128}, + { icon = "__Nylon2__/graphics/icons/ethylene-oxide.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, + }, + category = "chemistry", + subgroup = "chemical", + order = "e", + enabled = false, + energy_required = 3, + ingredients = ethylene_oxide_epoxy_ingredients, + results = {{ type = "fluid", name = "epoxy", amount = 10 }}, + } + }) +end + util.add_productivity("bio-nitric-acid") +end + +if mods["bzcarbon"] and mods["Krastorio2"] then + data:extend({ + { + type = "item", + name = "raw-graphite", + icon = "__Nylon2__/graphics/icons/raw-graphite.png", + icon_size = 128, + subgroup = "intermediate-product", + order = "c", + stack_size = 100, + }, + { + type = "recipe", + name = "raw-graphite", + icon = "__Nylon2__/graphics/icons/raw-graphite.png", + icon_size = 128, + category = "chemistry", + subgroup = "chemical", + order = "r", + enabled = false, + energy_required = 10, + ingredients = {{ type = "fluid", name = "coal-tar", amount = 20 }, {type="item", name="coke-powder", amount=10}}, + results = {{type="item", name="raw-graphite", amount=5}}, + }, + { + type = "recipe", + name = "synthetic-graphite", + category = "smelting", + order = "d[graphite]", + icons = (mods["Krastorio2"] and + { + { icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size = 128}, + { icon = "__Nylon2__/graphics/icons/raw-graphite.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, + } or { + { icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size = 128}, + }), + enabled = false, + energy_required = 12, + ingredients = {{type="item", name="raw-graphite", amount=10}}, + results = { + {type="item", name = "graphite", amount=10} + } + }, + { + type = "item", + name = "coke-powder", + icon = "__Nylon2__/graphics/icons/coke-powder.png", + icon_size = 64, + subgroup = "intermediate-product", + order = "c", + stack_size = 100, + }, + { + type = "recipe", + name = "coke-powder", + category = "crushing", + order = "l", + enabled = false, + energy_required = 4, + ingredients = {{type="item", name="kr-coke", amount=10}}, + results = {{type="item", name="coke-powder", amount=10}}, + } + }) + + util.add_productivity("coke-powder") + util.add_productivity("raw-graphite") + util.add_productivity("synthetic-graphite") +end + +local nylon_results = {{type="item", name="nylon", amount=10}} +if data.raw.fluid["chemical-waste"] then + table.insert(nylon_results, { type = "fluid", name = "chemical-waste", amount = 10 }) +end +data:extend({ + { + type = "item", + name = "nylon", + icon = "__Nylon2__/graphics/icons/nylon.png", + icon_size = 64, + subgroup = "chemical", + order = "n", + stack_size = 100, + }, + { + type = "item", + name = "nylon-machine-parts", + icon = "__Nylon2__/graphics/icons/nylon-machine-parts.png", + icon_size = 64, + subgroup = "intermediate-product", + order = "c", + stack_size = 100, + }, + { + type = "recipe", + name = "nylon", + icon = "__Nylon2__/graphics/icons/nylon.png", + icon_size = 64, + main_porduct = "nylon", + category = "chemistry", + subgroup = "chemical", + order = "h", + enabled = false, + energy_required = 5, + ingredients = {{type="item", name="adipic-acid", amount=10}, { type = "fluid", name = "hexamethylenediamine", amount = 10 }}, + results = nylon_results, + }, + { + type = "recipe", + name = "nylon-machine-parts", + category = "crafting", + order = "c", + enabled = false, + energy_required = 2, + ingredients = {{type="item", name="nylon", amount=2}}, + results = {{type="item", name="nylon-machine-parts", amount=1}}, + } +}) + +if mods["BrimStuff-Updated"] then + data:extend({ + { + type = "recipe", + name = "nylon-drive-belt", + icons = { + { icon = "__BrimStuff-Updated__/graphics/icons/drive-belt.png", icon_size = 64}, + { icon = "__Nylon2__/graphics/icons/nylon-machine-parts.png", icon_size = 64, scale=0.3, shift= {-8, -8}}, + }, + category = "crafting", + subgroup = "intermediate-product", + order = "d", + enabled = false, + energy_required = 2, + ingredients = {{type="item", name="nylon", amount=2},{type="item", name="nylon-machine-parts", amount=2},{type="item", name="low-density-structure", amount=1}}, + results = {{type="item", name="drive-belt", amount=8}}, + } + }) +end + +util.add_productivity("ketone-alcohol-oil") +util.add_productivity("adipic-acid") +util.add_productivity("hexamethylenediamine") +util.add_productivity("nylon") +util.add_productivity("nylon-machine-parts") \ No newline at end of file diff --git a/Nylon2/prototypes/technology.lua b/Nylon2/prototypes/technology.lua new file mode 100644 index 0000000..d60c51e --- /dev/null +++ b/Nylon2/prototypes/technology.lua @@ -0,0 +1,163 @@ +local util = require("data-util") + +local nylonPrerqu = {"oil-processing"} +local orgChemPrerqu = {"oil-processing"} +if mods["Cobalt2"] then + nylonPrerqu = {"cobalt-refining", "oil-processing"} +end +if mods["Krastorio2"] then + orgChemPrerqu = {"kr-advanced-chemistry"} +end + +data:extend({ + { + type = "technology", + name = "nylon-processing", + icons = {{ icon = "__Nylon2__/graphics/icons/nylon.png", icon_size = 64 }}, + prerequisites = nylonPrerqu, + effects = { + { + type = "unlock-recipe", + recipe = "ketone-alcohol-oil", + }, + { + type = "unlock-recipe", + recipe = "adipic-acid", + }, + { + type = "unlock-recipe", + recipe = "hexamethylenediamine", + }, + { + type = "unlock-recipe", + recipe = "nylon", + }, + { + type = "unlock-recipe", + recipe = "nylon-machine-parts", + } + }, + unit = + { + count = 75, + ingredients = + { + { "automation-science-pack", 1 }, + { "logistic-science-pack", 1 } + }, + time = 30 + } + }, + { + type = "technology", + name = "organic-chemistry", + icons = {{ icon = "__Nylon2__/graphics/icons/ethylene-oxide.png", icon_size = 128 }}, + prerequisites = orgChemPrerqu, + effects = { + { + type = "unlock-recipe", + recipe = "ethylene-oxide", + }, + { + type = "unlock-recipe", + recipe = "vinyl-acetate", + }, + { + type = "unlock-recipe", + recipe = "povidone", + }, + { + type = "unlock-recipe", + recipe = "povidone-lubricant", + }, + { + type = "unlock-recipe", + recipe = "ethanolamine", + }, + { + type = "unlock-recipe", + recipe = "ethanolamine-air-scrubbing", + } + }, + unit = + { + count = 100, + ingredients = + { + { "automation-science-pack", 1 }, + { "logistic-science-pack", 1 }, + { "chemical-science-pack", 1 } + }, + time = 30 + } + } +}) +util.add_prerequisite("logistics-2","nylon-processing") + +if mods["bzcarbon"] and mods["Krastorio2"] then +data:extend( + { + { + type = "technology", + name = "synthetic-graphite", + icons = {{ icon = "__Nylon2__/graphics/icons/raw-graphite.png", icon_size = 128 }}, + prerequisites = {"nylon-processing"}, + effects = { + { + type = "unlock-recipe", + recipe = "raw-graphite", + }, + { + type = "unlock-recipe", + recipe = "coke-powder", + }, + { + type = "unlock-recipe", + recipe = "synthetic-graphite", + } + }, + unit = + { + count = 50, + ingredients = + { + { "automation-science-pack", 1 }, + { "logistic-science-pack", 1 } + }, + time = 30 + } + } +}) +end + +if mods["BrimStuff-Updated"] then + data:extend( + { + { + type = "technology", + name = "nylon-drive-belt", + icons = { + { icon = "__BrimStuff-Updated__/graphics/icons/drive-belt.png", icon_size = 64}, + { icon = "__Nylon2__/graphics/icons/nylon-machine-parts.png", icon_size = 64, scale=0.3, shift= {-8, -8}}, + }, + prerequisites = {"nylon-processing"}, + effects = { + { + type = "unlock-recipe", + recipe = "nylon-drive-belt", + } + }, + unit = + { + count = 100, + ingredients = + { + { "automation-science-pack", 1 }, + { "logistic-science-pack", 1 }, + { "chemical-science-pack", 1 } + }, + time = 30 + } + } + }) + end \ No newline at end of file diff --git a/Nylon2/recipe-final-fix.lua b/Nylon2/recipe-final-fix.lua new file mode 100644 index 0000000..33c0e4d --- /dev/null +++ b/Nylon2/recipe-final-fix.lua @@ -0,0 +1,3 @@ +local util = require("data-util") + +util.remove_ingredient("fast-transport-belt","rubber") \ No newline at end of file diff --git a/Nylon2/recipe-modify.lua b/Nylon2/recipe-modify.lua new file mode 100644 index 0000000..ce8bbf6 --- /dev/null +++ b/Nylon2/recipe-modify.lua @@ -0,0 +1,64 @@ +local util = require("data-util") + +-- Main vanilla changes + +util.replace_ingredient("construction-robot", "iron-gear-wheel", "nylon-machine-parts", 2) + +-- Mod changes +util.add_ingredient("fast-transport-belt","nylon", 1) + +if mods["aai-industry"] then + util.replace_ingredient("stack-filter-inserter", "steel-gear-wheel", "nylon-machine-parts", 3) +end + +if mods["bobassembly"] then + util.replace_ingredient("electronics-machine-2", "steel-gear-wheel", "nylon-machine-parts", 8) +end + +if mods["space-exploration"] then + se_delivery_cannon_recipes["hexamethylenediamine-barrel"] = {name= "hexamethylenediamine-barrel"} + se_delivery_cannon_recipes["ethanolamine-barrel"] = {name= "ethanolamine-barrel"} + se_delivery_cannon_recipes["ethylene-glycol-barrel"] = {name= "ethylene-glycol-barrel"} + se_delivery_cannon_recipes["ethylene-oxide-barrel"] = {name= "ethylene-oxide-barrel"} + se_delivery_cannon_recipes["vinyl-acetate-barrel"] = {name= "vinyl-acetate-barrel"} + se_delivery_cannon_recipes["coal-tar-barrel"] = {name= "coal-tar-barrel"} + se_delivery_cannon_recipes["ketone-alcohol-oil-barrel"] = {name= "ketone-alcohol-oil-barrel"} + + util.set_ingredient("se-vitamelange-spice","se-vitamelange-bloom", 100) + util.add_ingredient("se-vitamelange-spice", "ethanolamine", 100) + + util.add_ingredient("se-chemical-gel","povidone", 2) + util.remove_ingredient("se-chemical-gel","toluene") + if mods["Krastorio2"] then + util.add_ingredient("se-space-coolant","ethylene-glycol", 5) + util.remove_ingredient("se-space-coolant","salt") + util.add_unlock("se-space-radiator-1","ethylene-glycol") + end +end + +if mods["Krastorio2"] or (mods["bzcarbon"] and mods["bzgas"]) then + util.add_unlock("nylon-processing","destructive-distillation") +end + +if mods["Krastorio2"] then + util.add_unlock("nylon-processing","bio-nitric-acid") + util.add_unlock("kr-fuel","solid-fuel-coal-tar") + util.replace_ingredient("kr-advanced-lab", "copper-cable", "nylon-machine-parts", 10) + if mods["bzchlorine"] then + util.add_unlock("organic-chemistry","ethylene-oxide-epoxy") + end +end + +if mods["IfNickel-Updated"] then + if data.raw.item["cooling-fan"] then + util.replace_ingredient("cooling-fan", "plastic-bar", "nylon", 3) + end +end + +if mods["248k-Redux"] then + util.remove_ingredient("fi_fiberer_recipe", "iron-gear-wheel") + util.add_ingredient("fi_fiberer_recipe", "nylon-machine-parts", 30) + + util.remove_ingredient("fi_compound_machine_recipe", "iron-gear-wheel") + util.add_ingredient("fi_compound_machine_recipe", "nylon-machine-parts", 30) +end \ No newline at end of file diff --git a/Nylon2/thumbnail.png b/Nylon2/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..a1001bab08c0c9e294990c3fa69b7a2a68a4cb31 GIT binary patch literal 8364 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index b604bb1..4d20535 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ -# Nylon2 +# Nylon +Updated for Factorio 2.0. + +Original mod: https://mods.factorio.com/mod/Nylon \ No newline at end of file