From 06c422dc494c8acdd372c631d74fc626e5b3fc21 Mon Sep 17 00:00:00 2001 From: Brevven Date: Fri, 24 Jan 2025 18:06:11 -0800 Subject: [PATCH] armor fixes --- changelog.txt | 2 ++ data-util.lua | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/changelog.txt b/changelog.txt index 400e400..60be8b7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,8 @@ --------------------------------------------------------------------------------------------------- Version: 2.0.16 Date: 2025-01-25 + Fixes: + - Improve compatibility with mods that change armor recipes in certain ways Changes: - When byproducts are turned off, don't add extra furnace output --------------------------------------------------------------------------------------------------- diff --git a/data-util.lua b/data-util.lua index 0931fec..5879fb7 100644 --- a/data-util.lua +++ b/data-util.lua @@ -804,11 +804,19 @@ function add_or_add_to_ingredient(recipe, ingredient, quantity) end end +function util.get_item(name) + if data.raw.item[name] then return data.raw.item[name] end + if data.raw.armor[name] then return data.raw.armor[name] end + if data.raw["space-platform-starter-pack"] and data.raw["space-platform-starter-pack"][name] then return data.raw["space-platform-starter-pack"][name] end + -- TODO add more subtypes of item here + return nil +end + -- Add a given quantity of ingredient to a given recipe function util.add_ingredient(recipe_name, ingredient, quantity, options) if not should_force(options) and bypass(recipe_name) then return end local is_fluid = not not data.raw.fluid[ingredient] - if data.raw.recipe[recipe_name] and (data.raw.item[ingredient] or is_fluid) then + if data.raw.recipe[recipe_name] and (util.get_item(ingredient) or is_fluid) then me.add_modified(recipe_name) prepare_redo_recycling(recipe_name) add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity, is_fluid) @@ -1769,6 +1777,21 @@ function util.redo_recycling() recycling.generate_recycling_recipe(recipe) end end + -- Find all recycling recipes that result in armor and make sure not to output more than 1 + for _, recipe in pairs(data.raw.recipe) do + if recipe.name:find("recycling") then + for _, product in pairs(recipe.results) do + if data.raw.armor[product.name] then + if product.amount then + if product.amount > .99 then + product.amount = 1 + product.extra_count_fraction = nil + end + end + end + end + end + end end end