From 10c34bd525cf776d682d024f695b2cc43aa18872 Mon Sep 17 00:00:00 2001 From: Brevven Date: Thu, 4 Aug 2022 01:40:19 -0700 Subject: [PATCH] up --- data-util.lua | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/data-util.lua b/data-util.lua index 58eac3d..1578b17 100644 --- a/data-util.lua +++ b/data-util.lua @@ -282,6 +282,51 @@ function add_product(recipe, 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.normal and recipe.normal.ingredients then + for i, ingredient in pairs(recipe.normal.ingredients) do + if ingredient[1] == ingredient_name then return ingredient[2] end + if ingredient.name == ingredient_name then return ingredient.amount end + end + elseif recipe.ingredients then + for i, ingredient in pairs(recipe.ingredients) do + if ingredient[1] == ingredient_name then return ingredient[2] end + 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.normal and recipe.normal.results then + for i, result in pairs(recipe.normal.results) do + if result[1] == product then return result[2] end + if result.name == product then return result.amount end + end + elseif recipe.normal and recipe.normal.result_count then + return recipe.normal.result_count + elseif recipe.results then + for i, result in pairs(recipe.results) do + if result[1] == product then return result[2] end + if result.name == product then return result.amount end + end + elseif recipe.result_count then + return recipe.result_count + end + return 1 + end + return 0 +end + -- Replace one ingredient with another in a recipe function util.replace_ingredient(recipe_name, old, new, amount) if me.bypass[recipe_name] then return end @@ -370,6 +415,46 @@ function replace_some_ingredient(recipe, old, old_amount, new, new_amount, is_fl end end +-- set the amount of a product. +function util.set_product_amount(recipe_name, product, amount) + me.add_modified(recipe_name) + if data.raw.recipe[recipe_name] then + if me.bypass[recipe_name] then return end + set_product_amount(data.raw.recipe[recipe_name], product, amount) + set_product_amount(data.raw.recipe[recipe_name].normal, product, amount) + set_product_amount(data.raw.recipe[recipe_name].expensive, 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) me.add_modified(recipe_name) @@ -526,6 +611,25 @@ function util.remove_raw(t, name) end end +-- Set energy required +function util.set_recipe_time(recipe_name, time) + me.add_modified(recipe_name) + if data.raw.recipe[recipe_name] then + if me.bypass[recipe_name] then return end + set_recipe_time(data.raw.recipe[recipe_name], time) + set_recipe_time(data.raw.recipe[recipe_name].normal, time) + set_recipe_time(data.raw.recipe[recipe_name].expensive, 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) me.add_modified(recipe_name)