Updates from TheSAguy
This commit is contained in:
parent
01bf94d2f2
commit
cd82d589da
6 changed files with 1706 additions and 1706 deletions
|
@ -1,130 +1,130 @@
|
||||||
local BioInd = require('common')('Bio_Industries_2')
|
local BioInd = require('common')('Bio_Industries_2')
|
||||||
|
|
||||||
if not thxbob.lib.machine then
|
if not thxbob.lib.machine then
|
||||||
thxbob.lib.machine = {}
|
thxbob.lib.machine = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.has_category(machine, category_in)
|
function thxbob.lib.machine.has_category(machine, category_in)
|
||||||
local hasit = false
|
local hasit = false
|
||||||
if machine and machine.crafting_categories then
|
if machine and machine.crafting_categories then
|
||||||
for i, category in pairs(machine.crafting_categories) do
|
for i, category in pairs(machine.crafting_categories) do
|
||||||
if category == category_in then
|
if category == category_in then
|
||||||
hasit = true
|
hasit = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return hasit
|
return hasit
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.add_category(machine, category)
|
function thxbob.lib.machine.add_category(machine, category)
|
||||||
if machine and data.raw["recipe-category"][category] then
|
if machine and data.raw["recipe-category"][category] then
|
||||||
if not machine.crafting_categories then
|
if not machine.crafting_categories then
|
||||||
machine.crafting_categories = { category }
|
machine.crafting_categories = { category }
|
||||||
elseif not thxbob.lib.machine.has_category(machine, category) then
|
elseif not thxbob.lib.machine.has_category(machine, category) then
|
||||||
table.insert(machine.crafting_categories, category)
|
table.insert(machine.crafting_categories, category)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not data.raw["recipe-category"][category] then
|
if not data.raw["recipe-category"][category] then
|
||||||
log("Crafting category " .. category .. " does not exist.")
|
log("Crafting category " .. category .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.if_add_category(machine, category, category_to_add)
|
function thxbob.lib.machine.if_add_category(machine, category, category_to_add)
|
||||||
if machine and data.raw["recipe-category"][category] and data.raw["recipe-category"][category_to_add] then
|
if machine and data.raw["recipe-category"][category] and data.raw["recipe-category"][category_to_add] then
|
||||||
if thxbob.lib.machine.has_category(machine, category) then
|
if thxbob.lib.machine.has_category(machine, category) then
|
||||||
thxbob.lib.machine.add_category(machine, category_to_add)
|
thxbob.lib.machine.add_category(machine, category_to_add)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not data.raw["recipe-category"][category] then
|
if not data.raw["recipe-category"][category] then
|
||||||
log("Crafting category " .. category .. " does not exist.")
|
log("Crafting category " .. category .. " does not exist.")
|
||||||
end
|
end
|
||||||
if not data.raw["recipe-category"][category_to_add] then
|
if not data.raw["recipe-category"][category_to_add] then
|
||||||
log("Crafting category " .. category_to_add .. " does not exist.")
|
log("Crafting category " .. category_to_add .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.type_if_add_category(machine_type, category, category_to_add)
|
function thxbob.lib.machine.type_if_add_category(machine_type, category, category_to_add)
|
||||||
if data.raw["recipe-category"][category] and data.raw["recipe-category"][category_to_add] then
|
if data.raw["recipe-category"][category] and data.raw["recipe-category"][category_to_add] then
|
||||||
for i, machine in pairs(data.raw[machine_type]) do
|
for i, machine in pairs(data.raw[machine_type]) do
|
||||||
thxbob.lib.machine.if_add_category(machine, category, category_to_add)
|
thxbob.lib.machine.if_add_category(machine, category, category_to_add)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not data.raw["recipe-category"][category] then
|
if not data.raw["recipe-category"][category] then
|
||||||
log("Crafting category " .. category .. " does not exist.")
|
log("Crafting category " .. category .. " does not exist.")
|
||||||
end
|
end
|
||||||
if not data.raw["recipe-category"][category_to_add] then
|
if not data.raw["recipe-category"][category_to_add] then
|
||||||
log("Crafting category " .. category_to_add .. " does not exist.")
|
log("Crafting category " .. category_to_add .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.has_resource_category(machine, category_in)
|
function thxbob.lib.machine.has_resource_category(machine, category_in)
|
||||||
local hasit = false
|
local hasit = false
|
||||||
if machine and machine.resource_categories then
|
if machine and machine.resource_categories then
|
||||||
for i, category in pairs(machine.resource_categories) do
|
for i, category in pairs(machine.resource_categories) do
|
||||||
if category == category_in then
|
if category == category_in then
|
||||||
hasit = true
|
hasit = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return hasit
|
return hasit
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.add_resource_category(machine, category)
|
function thxbob.lib.machine.add_resource_category(machine, category)
|
||||||
if machine and data.raw["resource-category"][category] then
|
if machine and data.raw["resource-category"][category] then
|
||||||
if not machine.resource_categories then
|
if not machine.resource_categories then
|
||||||
machine.resource_categories = { category }
|
machine.resource_categories = { category }
|
||||||
elseif not thxbob.lib.machine.has_resource_category(machine, category) then
|
elseif not thxbob.lib.machine.has_resource_category(machine, category) then
|
||||||
table.insert(machine.resource_categories, category)
|
table.insert(machine.resource_categories, category)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not data.raw["resource-category"][category] then
|
if not data.raw["resource-category"][category] then
|
||||||
log("Resource category " .. category .. " does not exist.")
|
log("Resource category " .. category .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.if_add_resource_category(machine, category, category_to_add)
|
function thxbob.lib.machine.if_add_resource_category(machine, category, category_to_add)
|
||||||
if machine and data.raw["resource-category"][category] and data.raw["resource-category"][category_to_add] then
|
if machine and data.raw["resource-category"][category] and data.raw["resource-category"][category_to_add] then
|
||||||
if thxbob.lib.machine.has_resource_category(machine, category) then
|
if thxbob.lib.machine.has_resource_category(machine, category) then
|
||||||
thxbob.lib.machine.add_resource_category(machine, category_to_add)
|
thxbob.lib.machine.add_resource_category(machine, category_to_add)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not data.raw["resource-category"][category] then
|
if not data.raw["resource-category"][category] then
|
||||||
log("Resource category " .. category .. " does not exist.")
|
log("Resource category " .. category .. " does not exist.")
|
||||||
end
|
end
|
||||||
if not data.raw["resource-category"][category_to_add] then
|
if not data.raw["resource-category"][category_to_add] then
|
||||||
log("Resource category " .. category_to_add .. " does not exist.")
|
log("Resource category " .. category_to_add .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.type_if_add_resource_category(machine_type, category, category_to_add)
|
function thxbob.lib.machine.type_if_add_resource_category(machine_type, category, category_to_add)
|
||||||
if data.raw["resource-category"][category] and data.raw["resource-category"][category_to_add] then
|
if data.raw["resource-category"][category] and data.raw["resource-category"][category_to_add] then
|
||||||
for i, machine in pairs(data.raw[machine_type]) do
|
for i, machine in pairs(data.raw[machine_type]) do
|
||||||
thxbob.lib.machine.if_add_resource_category(machine, category, category_to_add)
|
thxbob.lib.machine.if_add_resource_category(machine, category, category_to_add)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not data.raw["resource-category"][category] then
|
if not data.raw["resource-category"][category] then
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("Resource category " .. category .. " does not exist.")
|
log("Resource category " .. category .. " does not exist.")
|
||||||
end
|
end
|
||||||
if not data.raw["resource-category"][category_to_add] then
|
if not data.raw["resource-category"][category_to_add] then
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("Resource category " .. category_to_add .. " does not exist.")
|
log("Resource category " .. category_to_add .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.machine.copy_categories_from(machine_type, from_name, to_name)
|
function thxbob.lib.machine.copy_categories_from(machine_type, from_name, to_name)
|
||||||
local from_machine = data.raw[machine_type][from_name]
|
local from_machine = data.raw[machine_type][from_name]
|
||||||
local to_machine = data.raw[machine_type][to_name]
|
local to_machine = data.raw[machine_type][to_name]
|
||||||
|
|
||||||
if from_machine and to_machine then
|
if from_machine and to_machine then
|
||||||
for _, category in pairs(from_machine.crafting_categories) do
|
for _, category in pairs(from_machine.crafting_categories) do
|
||||||
thxbob.lib.machine.add_category(to_machine, category)
|
thxbob.lib.machine.add_category(to_machine, category)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,154 +1,154 @@
|
||||||
local BioInd = require('common')('Bio_Industries_2')
|
local BioInd = require('common')('Bio_Industries_2')
|
||||||
|
|
||||||
if not thxbob.lib.error then
|
if not thxbob.lib.error then
|
||||||
thxbob.lib.error = {}
|
thxbob.lib.error = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.error.technology(technology, name, desc)
|
function thxbob.lib.error.technology(technology, name, desc)
|
||||||
if name == nil then
|
if name == nil then
|
||||||
name = "Technology"
|
name = "Technology"
|
||||||
end
|
end
|
||||||
if desc == nil then
|
if desc == nil then
|
||||||
desc = name
|
desc = name
|
||||||
end
|
end
|
||||||
if technology == nil then
|
if technology == nil then
|
||||||
log(name .. " variable not passed")
|
log(name .. " variable not passed")
|
||||||
elseif type(technology) == "table" then
|
elseif type(technology) == "table" then
|
||||||
log(name .. " variable is a table.")
|
log(name .. " variable is a table.")
|
||||||
elseif not (type(technology) == "string") then
|
elseif not (type(technology) == "string") then
|
||||||
log(name .. " variable not a string.")
|
log(name .. " variable not a string.")
|
||||||
elseif not data.raw.technology[technology] then
|
elseif not data.raw.technology[technology] then
|
||||||
log(desc .. " " .. technology .. " does not exist.")
|
log(desc .. " " .. technology .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.error.recipe(recipe, name, desc)
|
function thxbob.lib.error.recipe(recipe, name, desc)
|
||||||
if name == nil then
|
if name == nil then
|
||||||
name = "Recipe"
|
name = "Recipe"
|
||||||
end
|
end
|
||||||
if desc == nil then
|
if desc == nil then
|
||||||
desc = name
|
desc = name
|
||||||
end
|
end
|
||||||
if recipe == nil then
|
if recipe == nil then
|
||||||
log(name .. " variable not passed")
|
log(name .. " variable not passed")
|
||||||
elseif type(recipe) == "table" then
|
elseif type(recipe) == "table" then
|
||||||
log(name .. " variable is a table.")
|
log(name .. " variable is a table.")
|
||||||
elseif not (type(recipe) == "string") then
|
elseif not (type(recipe) == "string") then
|
||||||
log(name .. " variable not a string.")
|
log(name .. " variable not a string.")
|
||||||
elseif not data.raw.recipe[recipe] then
|
elseif not data.raw.recipe[recipe] then
|
||||||
log(desc .. " " .. recipe .. " does not exist.")
|
log(desc .. " " .. recipe .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.error.resource(resource, name, desc)
|
function thxbob.lib.error.resource(resource, name, desc)
|
||||||
if name == nil then
|
if name == nil then
|
||||||
name = "Resource"
|
name = "Resource"
|
||||||
end
|
end
|
||||||
if desc == nil then
|
if desc == nil then
|
||||||
desc = name
|
desc = name
|
||||||
end
|
end
|
||||||
if resource == nil then
|
if resource == nil then
|
||||||
log(name .. " variable not passed")
|
log(name .. " variable not passed")
|
||||||
elseif type(resource) == "table" then
|
elseif type(resource) == "table" then
|
||||||
log(name .. " variable is a table.")
|
log(name .. " variable is a table.")
|
||||||
elseif not (type(resource) == "string") then
|
elseif not (type(resource) == "string") then
|
||||||
log(name .. " variable not a string.")
|
log(name .. " variable not a string.")
|
||||||
elseif not data.raw.resource[resource] then
|
elseif not data.raw.resource[resource] then
|
||||||
log(desc .. " " .. resource .. " does not exist.")
|
log(desc .. " " .. resource .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.error.item(item, name)
|
function thxbob.lib.error.item(item, name)
|
||||||
if name == nil then
|
if name == nil then
|
||||||
name = "Item"
|
name = "Item"
|
||||||
end
|
end
|
||||||
if item == nil then
|
if item == nil then
|
||||||
log(name .. " variable not passed")
|
log(name .. " variable not passed")
|
||||||
elseif type(item) == "table" then
|
elseif type(item) == "table" then
|
||||||
log(name .. " variable is a table.")
|
log(name .. " variable is a table.")
|
||||||
elseif not (type(item) == "string") then
|
elseif not (type(item) == "string") then
|
||||||
log(name .. " variable not a string.")
|
log(name .. " variable not a string.")
|
||||||
else
|
else
|
||||||
local item_type = thxbob.lib.item.get_type(item)
|
local item_type = thxbob.lib.item.get_type(item)
|
||||||
if not item_type then
|
if not item_type then
|
||||||
log(name .. " " .. item .. " not a valid item of any type.")
|
log(name .. " " .. item .. " not a valid item of any type.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.error.item_of_type(item, item_type_in, name)
|
function thxbob.lib.error.item_of_type(item, item_type_in, name)
|
||||||
if name == nil then
|
if name == nil then
|
||||||
name = "Item"
|
name = "Item"
|
||||||
end
|
end
|
||||||
if item == nil then
|
if item == nil then
|
||||||
log(name .. " variable not passed")
|
log(name .. " variable not passed")
|
||||||
elseif type(item) == "table" then
|
elseif type(item) == "table" then
|
||||||
log(name .. " variable is a table.")
|
log(name .. " variable is a table.")
|
||||||
elseif not (type(item) == "string") then
|
elseif not (type(item) == "string") then
|
||||||
log(name .. " variable not a string.")
|
log(name .. " variable not a string.")
|
||||||
else
|
else
|
||||||
local item_type = thxbob.lib.item.get_type(item)
|
local item_type = thxbob.lib.item.get_type(item)
|
||||||
if not item_type then
|
if not item_type then
|
||||||
log(name .. " " .. item .. " does not exist.")
|
log(name .. " " .. item .. " does not exist.")
|
||||||
elseif item_type ~= item_type_in then
|
elseif item_type ~= item_type_in then
|
||||||
log(name .. " " .. item .. " is of type: " .. item_type .. ", expected: " .. item_type_in)
|
log(name .. " " .. item .. " is of type: " .. item_type .. ", expected: " .. item_type_in)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.error.ingredient(ingredient, name)
|
function thxbob.lib.error.ingredient(ingredient, name)
|
||||||
if name == nil then
|
if name == nil then
|
||||||
name = "Ingredient"
|
name = "Ingredient"
|
||||||
end
|
end
|
||||||
if ingredient == nil then
|
if ingredient == nil then
|
||||||
log(name .. " variable not passed")
|
log(name .. " variable not passed")
|
||||||
elseif not (type(ingredient == "table")) then
|
elseif not (type(ingredient == "table")) then
|
||||||
log(name .. " variable not a table")
|
log(name .. " variable not a table")
|
||||||
elseif not (type(ingredient.name) == "string") then
|
elseif not (type(ingredient.name) == "string") then
|
||||||
log(name .. ".name variable not a string.")
|
log(name .. ".name variable not a string.")
|
||||||
elseif thxbob.lib.item.get_type(ingredient.name) == nil then
|
elseif thxbob.lib.item.get_type(ingredient.name) == nil then
|
||||||
log(name .. ".name not a valid item of any type.")
|
log(name .. ".name not a valid item of any type.")
|
||||||
end
|
end
|
||||||
if not (type(ingredient.amount) == "number") then
|
if not (type(ingredient.amount) == "number") then
|
||||||
log(name .. ".amount variable not a number.")
|
log(name .. ".amount variable not a number.")
|
||||||
end
|
end
|
||||||
if not (ingredient.type == "item" or ingredient.type == "fluid") then
|
if not (ingredient.type == "item" or ingredient.type == "fluid") then
|
||||||
log(name .. ".type not a valid ingredient item type")
|
log(name .. ".type not a valid ingredient item type")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.error.result(result, name)
|
function thxbob.lib.error.result(result, name)
|
||||||
if name == nil then
|
if name == nil then
|
||||||
name = "Result"
|
name = "Result"
|
||||||
end
|
end
|
||||||
if result == nil then
|
if result == nil then
|
||||||
log(name .. " variable not passed")
|
log(name .. " variable not passed")
|
||||||
return
|
return
|
||||||
elseif not (type(result == "table")) then
|
elseif not (type(result == "table")) then
|
||||||
log(name .. " variable not a table")
|
log(name .. " variable not a table")
|
||||||
elseif not (type(result.name) == "string") then
|
elseif not (type(result.name) == "string") then
|
||||||
log(name .. ".name variable not a string.")
|
log(name .. ".name variable not a string.")
|
||||||
elseif thxbob.lib.item.get_type(result.name) == nil then
|
elseif thxbob.lib.item.get_type(result.name) == nil then
|
||||||
log(name .. ".name not a valid item of any type.")
|
log(name .. ".name not a valid item of any type.")
|
||||||
end
|
end
|
||||||
if result.amount then
|
if result.amount then
|
||||||
if type(result.amount) == "number" then
|
if type(result.amount) == "number" then
|
||||||
log(name .. ".amount variable not a number.")
|
log(name .. ".amount variable not a number.")
|
||||||
end
|
end
|
||||||
elseif result.amount_min and result.amount_max then
|
elseif result.amount_min and result.amount_max then
|
||||||
if not (type(result.amount_min) == "number") then
|
if not (type(result.amount_min) == "number") then
|
||||||
log(name .. ".amount_min variable not a number.")
|
log(name .. ".amount_min variable not a number.")
|
||||||
end
|
end
|
||||||
if not (type(result.amount_max) == "number") then
|
if not (type(result.amount_max) == "number") then
|
||||||
log(name .. ".amount_max variable not a number.")
|
log(name .. ".amount_max variable not a number.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if result.probability then
|
if result.probability then
|
||||||
if not (type(result.probability) == "number") then
|
if not (type(result.probability) == "number") then
|
||||||
log(name .. ".probability not a number")
|
log(name .. ".probability not a number")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not (result.type == "item" or result.type == "fluid") then
|
if not (result.type == "item" or result.type == "fluid") then
|
||||||
log(name .. ".type not a valid result item type")
|
log(name .. ".type not a valid result item type")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,80 +1,80 @@
|
||||||
local BioInd = require('common')('Bio_Industries_2')
|
local BioInd = require('common')('Bio_Industries_2')
|
||||||
|
|
||||||
-- Merges table2's contents into table1.
|
-- Merges table2's contents into table1.
|
||||||
function thxbob.lib.table_merge(table1, table2)
|
function thxbob.lib.table_merge(table1, table2)
|
||||||
for index, value in pairs(table2) do
|
for index, value in pairs(table2) do
|
||||||
if type(value) == "table" then
|
if type(value) == "table" then
|
||||||
if type(table1[index]) == "table" then
|
if type(table1[index]) == "table" then
|
||||||
thxbob.lib.table_merge(table1[index], table2[index])
|
thxbob.lib.table_merge(table1[index], table2[index])
|
||||||
else
|
else
|
||||||
table1[index] = util.table.deepcopy(table2[index])
|
table1[index] = util.table.deepcopy(table2[index])
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
table1[index] = value
|
table1[index] = value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.minable_result_check(object)
|
function thxbob.lib.minable_result_check(object)
|
||||||
if object then
|
if object then
|
||||||
if object.results == nil then
|
if object.results == nil then
|
||||||
object.results = {}
|
object.results = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
if object.result then
|
if object.result then
|
||||||
local item = thxbob.lib.item.ingredient({ type = "item", name = object.result, amount = 1 })
|
local item = thxbob.lib.item.ingredient({ type = "item", name = object.result, amount = 1 })
|
||||||
if object.count then
|
if object.count then
|
||||||
item.amount = object.count
|
item.amount = object.count
|
||||||
object.count = nil
|
object.count = nil
|
||||||
end
|
end
|
||||||
thxbob.lib.item.add_new(object.results, item)
|
thxbob.lib.item.add_new(object.results, item)
|
||||||
|
|
||||||
object.result = nil
|
object.result = nil
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(object .. " does not exist.")
|
log(object .. " does not exist.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.belt_speed_ips(ips)
|
function thxbob.lib.belt_speed_ips(ips)
|
||||||
return ips * 1 / 480
|
return ips * 1 / 480
|
||||||
end
|
end
|
||||||
|
|
||||||
--Inserts the new item into the table only if it doesn't already exist. (Index optional. Designed to insert strings only.)
|
--Inserts the new item into the table only if it doesn't already exist. (Index optional. Designed to insert strings only.)
|
||||||
function thxbob.lib.safe_insert(array, new_item, index)
|
function thxbob.lib.safe_insert(array, new_item, index)
|
||||||
local addit = true
|
local addit = true
|
||||||
for i, item in pairs(array) do
|
for i, item in pairs(array) do
|
||||||
if item == new_item then
|
if item == new_item then
|
||||||
addit = false
|
addit = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
if index then
|
if index then
|
||||||
table.insert(array, index, new_item)
|
table.insert(array, index, new_item)
|
||||||
else
|
else
|
||||||
table.insert(array, new_item)
|
table.insert(array, new_item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--takes an item/fluid/entity(maybe even recipe) and returns a complete icons array.
|
--takes an item/fluid/entity(maybe even recipe) and returns a complete icons array.
|
||||||
--if it has no icons= tag, it builds one from icon and icon_size.
|
--if it has no icons= tag, it builds one from icon and icon_size.
|
||||||
--Example use thxbob.lib.icons_from_item(data.raw.item.wood)
|
--Example use thxbob.lib.icons_from_item(data.raw.item.wood)
|
||||||
function thxbob.lib.icons_from_item(item)
|
function thxbob.lib.icons_from_item(item)
|
||||||
if item and type(item) == "table" then
|
if item and type(item) == "table" then
|
||||||
local icons = {}
|
local icons = {}
|
||||||
if item.icons then
|
if item.icons then
|
||||||
icons = item.icons
|
icons = item.icons
|
||||||
elseif item.icon then
|
elseif item.icon then
|
||||||
icons = { { icon = item.icon, icon_size = item.icon_size or 64 } }
|
icons = { { icon = item.icon, icon_size = item.icon_size or 64 } }
|
||||||
else
|
else
|
||||||
icons = nil
|
icons = nil
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log(item.name .. " has no valid icons.")
|
log(item.name .. " has no valid icons.")
|
||||||
end
|
end
|
||||||
return icons
|
return icons
|
||||||
end
|
end
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("object does not exist.")
|
log("object does not exist.")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,363 +1,363 @@
|
||||||
local BioInd = require('common')('Bio_Industries_2')
|
local BioInd = require('common')('Bio_Industries_2')
|
||||||
|
|
||||||
|
|
||||||
if not thxbob.lib.item then
|
if not thxbob.lib.item then
|
||||||
thxbob.lib.item = {}
|
thxbob.lib.item = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.get_type(name) --returns actual item type
|
function thxbob.lib.item.get_type(name) --returns actual item type
|
||||||
local item_type = nil
|
local item_type = nil
|
||||||
if type(name) == "string" then
|
if type(name) == "string" then
|
||||||
for type_name, _ in pairs(defines.prototypes["item"]) do
|
for type_name, _ in pairs(defines.prototypes["item"]) do
|
||||||
if data.raw[type_name] and data.raw[type_name][name] then
|
if data.raw[type_name] and data.raw[type_name][name] then
|
||||||
item_type = type_name
|
item_type = type_name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if data.raw.fluid and data.raw.fluid[name] then
|
if data.raw.fluid and data.raw.fluid[name] then
|
||||||
item_type = "fluid"
|
item_type = "fluid"
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log("Item name is not a string")
|
log("Item name is not a string")
|
||||||
end
|
end
|
||||||
return item_type
|
return item_type
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.get_basic_type(name) --returns fluid for fluid, item for all other types.
|
function thxbob.lib.item.get_basic_type(name) --returns fluid for fluid, item for all other types.
|
||||||
local item_type = thxbob.lib.item.get_type(name)
|
local item_type = thxbob.lib.item.get_type(name)
|
||||||
if not (item_type == "fluid" or item_type == nil) then
|
if not (item_type == "fluid" or item_type == nil) then
|
||||||
item_type = "item"
|
item_type = "item"
|
||||||
end
|
end
|
||||||
return item_type
|
return item_type
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.get_basic_type_simple(name) --assumes type is item, even if the item doesn't exist
|
function thxbob.lib.item.get_basic_type_simple(name) --assumes type is item, even if the item doesn't exist
|
||||||
local item_type = "item"
|
local item_type = "item"
|
||||||
if data.raw.fluid[name] then
|
if data.raw.fluid[name] then
|
||||||
item_type = "fluid"
|
item_type = "fluid"
|
||||||
end
|
end
|
||||||
return item_type
|
return item_type
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.ingredient_simple(inputs) --doesn't care if the item actually exists or not, returns if a valid ingredient structure can be determined.
|
function thxbob.lib.item.ingredient_simple(inputs) --doesn't care if the item actually exists or not, returns if a valid ingredient structure can be determined.
|
||||||
local item = {}
|
local item = {}
|
||||||
|
|
||||||
if type(inputs) == "table" then
|
if type(inputs) == "table" then
|
||||||
if inputs.name and type(inputs.name) == "string" then
|
if inputs.name and type(inputs.name) == "string" then
|
||||||
item.name = inputs.name
|
item.name = inputs.name
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("Unable to determine an ingredient name")
|
log("Unable to determine an ingredient name")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if inputs.amount and type(inputs.amount) == "number" then
|
if inputs.amount and type(inputs.amount) == "number" then
|
||||||
item.amount = inputs.amount
|
item.amount = inputs.amount
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("Unable to determine an ingredient amount")
|
log("Unable to determine an ingredient amount")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if inputs.type then
|
if inputs.type then
|
||||||
item.type = inputs.type
|
item.type = inputs.type
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("Unable to determine an ingredient type")
|
log("Unable to determine an ingredient type")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if item.type == "item" then
|
if item.type == "item" then
|
||||||
if type(item.amount) ~= "number" or item.amount < 1 then
|
if type(item.amount) ~= "number" or item.amount < 1 then
|
||||||
item.amount = 1
|
item.amount = 1
|
||||||
else
|
else
|
||||||
item.amount = math.floor(item.amount)
|
item.amount = math.floor(item.amount)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if item.type == "fluid" then
|
if item.type == "fluid" then
|
||||||
item.temperature = inputs.temperature
|
item.temperature = inputs.temperature
|
||||||
item.minimum_temperature = inputs.minimum_temperature
|
item.minimum_temperature = inputs.minimum_temperature
|
||||||
item.maximum_temperature = inputs.maximum_temperature
|
item.maximum_temperature = inputs.maximum_temperature
|
||||||
item.fluidbox_index = inputs.fluidbox_index
|
item.fluidbox_index = inputs.fluidbox_index
|
||||||
item.fluidbox_multiplier = inputs.fluidbox_multiplier
|
item.fluidbox_multiplier = inputs.fluidbox_multiplier
|
||||||
end
|
end
|
||||||
|
|
||||||
item.ignored_by_stats = inputs.ignored_by_stats
|
item.ignored_by_stats = inputs.ignored_by_stats
|
||||||
|
|
||||||
return item
|
return item
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.ingredient(item)
|
thxbob.lib.error.ingredient(item)
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.ingredient(inputs) --returns a valid ingredient only if the item exists.
|
function thxbob.lib.item.ingredient(inputs) --returns a valid ingredient only if the item exists.
|
||||||
local item = thxbob.lib.item.ingredient_simple(inputs)
|
local item = thxbob.lib.item.ingredient_simple(inputs)
|
||||||
if item then
|
if item then
|
||||||
return item
|
return item
|
||||||
else
|
else
|
||||||
if inputs and inputs.name then
|
if inputs and inputs.name then
|
||||||
log(inputs.name)
|
log(inputs.name)
|
||||||
end
|
end
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.ingredient(inputs)
|
thxbob.lib.error.ingredient(inputs)
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--Same as ingredient, but has support for amount_min, amount_max and probability
|
--Same as ingredient, but has support for amount_min, amount_max and probability
|
||||||
function thxbob.lib.item.result_simple(inputs)
|
function thxbob.lib.item.result_simple(inputs)
|
||||||
local item = {}
|
local item = {}
|
||||||
|
|
||||||
if type(inputs) == "table" then
|
if type(inputs) == "table" then
|
||||||
if inputs.name and type(inputs.name) == "string" then
|
if inputs.name and type(inputs.name) == "string" then
|
||||||
item.name = inputs.name
|
item.name = inputs.name
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("Unable to determine a result name")
|
log("Unable to determine a result name")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if inputs.amount and type(inputs.amount) == "number" then
|
if inputs.amount and type(inputs.amount) == "number" then
|
||||||
item.amount = inputs.amount
|
item.amount = inputs.amount
|
||||||
elseif inputs.amount_min and inputs.amount_max then
|
elseif inputs.amount_min and inputs.amount_max then
|
||||||
item.amount_min = inputs.amount_min
|
item.amount_min = inputs.amount_min
|
||||||
item.amount_max = inputs.amount_max
|
item.amount_max = inputs.amount_max
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log("Unable to determine a result amount")
|
log("Unable to determine a result amount")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if inputs.probability then
|
if inputs.probability then
|
||||||
item.probability = inputs.probability
|
item.probability = inputs.probability
|
||||||
end
|
end
|
||||||
|
|
||||||
if inputs.type then
|
if inputs.type then
|
||||||
item.type = inputs.type
|
item.type = inputs.type
|
||||||
else
|
else
|
||||||
item.type = thxbob.lib.item.get_basic_type_simple(item.name)
|
item.type = thxbob.lib.item.get_basic_type_simple(item.name)
|
||||||
end
|
end
|
||||||
|
|
||||||
if item.type == "item" then
|
if item.type == "item" then
|
||||||
if item.amount then
|
if item.amount then
|
||||||
if type(item.amount) ~= "number" or item.amount < 1 then
|
if type(item.amount) ~= "number" or item.amount < 1 then
|
||||||
item.amount = 1
|
item.amount = 1
|
||||||
else
|
else
|
||||||
item.amount = math.floor(item.amount)
|
item.amount = math.floor(item.amount)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if item.amount_min then
|
if item.amount_min then
|
||||||
if type(item.amount_min) ~= "number" or item.amount_min < 1 then
|
if type(item.amount_min) ~= "number" or item.amount_min < 1 then
|
||||||
item.amount_min = 0
|
item.amount_min = 0
|
||||||
else
|
else
|
||||||
item.amount_min = math.floor(item.amount_min)
|
item.amount_min = math.floor(item.amount_min)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if item.amount_max then
|
if item.amount_max then
|
||||||
if type(item.amount_max) ~= "number" or item.amount_max < 1 then
|
if type(item.amount_max) ~= "number" or item.amount_max < 1 then
|
||||||
item.amount_max = 1
|
item.amount_max = 1
|
||||||
else
|
else
|
||||||
item.amount_max = math.ceil(item.amount_max)
|
item.amount_max = math.ceil(item.amount_max)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if item.type == "fluid" then
|
if item.type == "fluid" then
|
||||||
item.fluidbox_index = inputs.fluidbox_index
|
item.fluidbox_index = inputs.fluidbox_index
|
||||||
item.temperature = inputs.temperature
|
item.temperature = inputs.temperature
|
||||||
else
|
else
|
||||||
item.extra_count_fraction = inputs.extra_count_fraction
|
item.extra_count_fraction = inputs.extra_count_fraction
|
||||||
item.percent_spoiled = inputs.percent_spoiled
|
item.percent_spoiled = inputs.percent_spoiled
|
||||||
end
|
end
|
||||||
|
|
||||||
item.ignored_by_stats = inputs.ignored_by_stats
|
item.ignored_by_stats = inputs.ignored_by_stats
|
||||||
item.ignored_by_productivity = inputs.ignored_by_productivity
|
item.ignored_by_productivity = inputs.ignored_by_productivity
|
||||||
item.show_details_in_recipe_tooltip = inputs.show_details_in_recipe_tooltip
|
item.show_details_in_recipe_tooltip = inputs.show_details_in_recipe_tooltip
|
||||||
end
|
end
|
||||||
|
|
||||||
if
|
if
|
||||||
type(item.name) == "string"
|
type(item.name) == "string"
|
||||||
and (type(item.amount) == "number" or (type(item.amount_min) == "number" and type(item.amount_max) == "number"))
|
and (type(item.amount) == "number" or (type(item.amount_min) == "number" and type(item.amount_max) == "number"))
|
||||||
and (item.probability == nil or type(item.probability) == "number")
|
and (item.probability == nil or type(item.probability) == "number")
|
||||||
and (item.type == "item" or item.type == "fluid")
|
and (item.type == "item" or item.type == "fluid")
|
||||||
then
|
then
|
||||||
return item
|
return item
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.result(item)
|
thxbob.lib.error.result(item)
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.result(inputs) --returns a valid result only if the item exists.
|
function thxbob.lib.item.result(inputs) --returns a valid result only if the item exists.
|
||||||
local item = thxbob.lib.item.result_simple(inputs)
|
local item = thxbob.lib.item.result_simple(inputs)
|
||||||
if item then
|
if item then
|
||||||
return item
|
return item
|
||||||
else
|
else
|
||||||
if inputs and inputs.name then
|
if inputs and inputs.name then
|
||||||
log(inputs.name)
|
log(inputs.name)
|
||||||
end
|
end
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.result(inputs)
|
thxbob.lib.error.result(inputs)
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.combine(item1_in, item2_in)
|
function thxbob.lib.item.combine(item1_in, item2_in)
|
||||||
local item = {}
|
local item = {}
|
||||||
local item1 = thxbob.lib.item.result(item1_in)
|
local item1 = thxbob.lib.item.result(item1_in)
|
||||||
local item2 = thxbob.lib.item.result(item2_in)
|
local item2 = thxbob.lib.item.result(item2_in)
|
||||||
|
|
||||||
if item1 and item2 then
|
if item1 and item2 then
|
||||||
item.name = item1.name
|
item.name = item1.name
|
||||||
item.type = item1.type
|
item.type = item1.type
|
||||||
|
|
||||||
if item1.amount and item2.amount then
|
if item1.amount and item2.amount then
|
||||||
item.amount = item1.amount + item2.amount
|
item.amount = item1.amount + item2.amount
|
||||||
elseif item1.amount_min and item1.amount_max and item2.amount_min and item2.amount_max then
|
elseif item1.amount_min and item1.amount_max and item2.amount_min and item2.amount_max then
|
||||||
item.amount_min = item1.amount_min + item2.amount_min
|
item.amount_min = item1.amount_min + item2.amount_min
|
||||||
item.amount_max = item1.amount_max + item2.amount_max
|
item.amount_max = item1.amount_max + item2.amount_max
|
||||||
elseif item1.amount_min and item1.amount_max and item2.amount then
|
elseif item1.amount_min and item1.amount_max and item2.amount then
|
||||||
item.amount_min = item1.amount_min + item2.amount
|
item.amount_min = item1.amount_min + item2.amount
|
||||||
item.amount_max = item1.amount_max + item2.amount
|
item.amount_max = item1.amount_max + item2.amount
|
||||||
elseif item1.amount and item2.amount_min and item2.amount_max then
|
elseif item1.amount and item2.amount_min and item2.amount_max then
|
||||||
item.amount_min = item1.amount + item2.amount_min
|
item.amount_min = item1.amount + item2.amount_min
|
||||||
item.amount_max = item1.amount + item2.amount_max
|
item.amount_max = item1.amount + item2.amount_max
|
||||||
end
|
end
|
||||||
|
|
||||||
if item1.probability and item2.probability then
|
if item1.probability and item2.probability then
|
||||||
item.probability = (item1.probability + item2.probability) / 2
|
item.probability = (item1.probability + item2.probability) / 2
|
||||||
elseif item1.probability then
|
elseif item1.probability then
|
||||||
item.probability = (item1.probability + 1) / 2
|
item.probability = (item1.probability + 1) / 2
|
||||||
elseif item2.probability then
|
elseif item2.probability then
|
||||||
item.probability = (item2.probability + 1) / 2
|
item.probability = (item2.probability + 1) / 2
|
||||||
end
|
end
|
||||||
|
|
||||||
if item1.ignored_by_productivity and item2.ignored_by_productivity then
|
if item1.ignored_by_productivity and item2.ignored_by_productivity then
|
||||||
item.ignored_by_productivity = item1.ignored_by_productivity + item2.ignored_by_productivity
|
item.ignored_by_productivity = item1.ignored_by_productivity + item2.ignored_by_productivity
|
||||||
elseif item1.ignored_by_productivity then
|
elseif item1.ignored_by_productivity then
|
||||||
item.ignored_by_productivity = item1.ignored_by_productivity
|
item.ignored_by_productivity = item1.ignored_by_productivity
|
||||||
elseif item2.ignored_by_productivity then
|
elseif item2.ignored_by_productivity then
|
||||||
item.ignored_by_productivity = item2.ignored_by_productivity
|
item.ignored_by_productivity = item2.ignored_by_productivity
|
||||||
end
|
end
|
||||||
|
|
||||||
if item1.ignored_by_stats and item2.ignored_by_stats then
|
if item1.ignored_by_stats and item2.ignored_by_stats then
|
||||||
item.ignored_by_stats = item1.ignored_by_stats + item2.ignored_by_stats
|
item.ignored_by_stats = item1.ignored_by_stats + item2.ignored_by_stats
|
||||||
elseif item1.ignored_by_stats then
|
elseif item1.ignored_by_stats then
|
||||||
item.ignored_by_stats = item1.ignored_by_stats
|
item.ignored_by_stats = item1.ignored_by_stats
|
||||||
elseif item2.ignored_by_stats then
|
elseif item2.ignored_by_stats then
|
||||||
item.ignored_by_stats = item2.ignored_by_stats
|
item.ignored_by_stats = item2.ignored_by_stats
|
||||||
end
|
end
|
||||||
|
|
||||||
item.fluidbox_index = item1.fluidbox_index or item2.fluidbox_index
|
item.fluidbox_index = item1.fluidbox_index or item2.fluidbox_index
|
||||||
|
|
||||||
return item
|
return item
|
||||||
else
|
else
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.add(list, item_in) --increments amount if exists
|
function thxbob.lib.item.add(list, item_in) --increments amount if exists
|
||||||
local item = thxbob.lib.item.result(item_in)
|
local item = thxbob.lib.item.result(item_in)
|
||||||
if type(list) == "table" and item then
|
if type(list) == "table" and item then
|
||||||
local addit = true
|
local addit = true
|
||||||
for i, object in pairs(list) do
|
for i, object in pairs(list) do
|
||||||
if object.name == item.name then
|
if object.name == item.name then
|
||||||
addit = false
|
addit = false
|
||||||
list[i] = thxbob.lib.item.combine(object, item)
|
list[i] = thxbob.lib.item.combine(object, item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
table.insert(list, item)
|
table.insert(list, item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.add_new(list, item_in) --ignores if exists
|
function thxbob.lib.item.add_new(list, item_in) --ignores if exists
|
||||||
local item = thxbob.lib.item.result(item_in)
|
local item = thxbob.lib.item.result(item_in)
|
||||||
if type(list) == "table" and item then
|
if type(list) == "table" and item then
|
||||||
local addit = true
|
local addit = true
|
||||||
for i, object in pairs(list) do
|
for i, object in pairs(list) do
|
||||||
local basic_object = thxbob.lib.item.result(object)
|
local basic_object = thxbob.lib.item.result(object)
|
||||||
if basic_object and item.name == basic_object.name then
|
if basic_object and item.name == basic_object.name then
|
||||||
addit = false
|
addit = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
table.insert(list, item)
|
table.insert(list, item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.remove(list, item)
|
function thxbob.lib.item.remove(list, item)
|
||||||
if type(list) == "table" and type(item) == "string" then
|
if type(list) == "table" and type(item) == "string" then
|
||||||
for i, object in ipairs(list) do
|
for i, object in ipairs(list) do
|
||||||
if object.name == item then
|
if object.name == item then
|
||||||
table.remove(list, i)
|
table.remove(list, i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.item(item)
|
thxbob.lib.error.item(item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.set(list, item_in)
|
function thxbob.lib.item.set(list, item_in)
|
||||||
local item = thxbob.lib.item.result(item_in)
|
local item = thxbob.lib.item.result(item_in)
|
||||||
if type(list) == "table" and item then
|
if type(list) == "table" and item then
|
||||||
local addit = true
|
local addit = true
|
||||||
for i, object in pairs(list) do
|
for i, object in pairs(list) do
|
||||||
if object.name == item.name then
|
if object.name == item.name then
|
||||||
list[i] = item
|
list[i] = item
|
||||||
addit = false
|
addit = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
table.insert(list, item)
|
table.insert(list, item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.hide(item_name)
|
function thxbob.lib.item.hide(item_name)
|
||||||
if type(item_name) == "string" then
|
if type(item_name) == "string" then
|
||||||
local item = data.raw.item[item_name] or data.raw.fluid[item_name]
|
local item = data.raw.item[item_name] or data.raw.fluid[item_name]
|
||||||
if item then
|
if item then
|
||||||
item.hidden = true
|
item.hidden = true
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.item(item_name)
|
thxbob.lib.error.item(item_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.hide_entity(type_name, entity_name)
|
function thxbob.lib.item.hide_entity(type_name, entity_name)
|
||||||
if type(type_name) == "string" and type(entity_name) == "string" then
|
if type(type_name) == "string" and type(entity_name) == "string" then
|
||||||
local entities = data.raw[type_name]
|
local entities = data.raw[type_name]
|
||||||
if entities then
|
if entities then
|
||||||
local entity = entities[entity_name]
|
local entity = entities[entity_name]
|
||||||
if entity then
|
if entity then
|
||||||
entity.hidden = true
|
entity.hidden = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.item(entity_name)
|
thxbob.lib.error.item(entity_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.item.set_subgroup(item_name, subgroup)
|
function thxbob.lib.item.set_subgroup(item_name, subgroup)
|
||||||
if type(item_name) == "string" and type(subgroup) == "string" then
|
if type(item_name) == "string" and type(subgroup) == "string" then
|
||||||
local item = data.raw.item[item_name]
|
local item = data.raw.item[item_name]
|
||||||
if item then
|
if item then
|
||||||
item.subgroup = subgroup
|
item.subgroup = subgroup
|
||||||
else
|
else
|
||||||
item = data.raw.fluid[item_name]
|
item = data.raw.fluid[item_name]
|
||||||
if item then
|
if item then
|
||||||
item.subgroup = subgroup
|
item.subgroup = subgroup
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.item(item_name)
|
thxbob.lib.error.item(item_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,419 +1,419 @@
|
||||||
local BioInd = require('common')('Bio_Industries_2')
|
local BioInd = require('common')('Bio_Industries_2')
|
||||||
|
|
||||||
if not thxbob.lib.tech then
|
if not thxbob.lib.tech then
|
||||||
thxbob.lib.tech = {}
|
thxbob.lib.tech = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
local function add_new_science_pack(technology, pack, amount)
|
local function add_new_science_pack(technology, pack, amount)
|
||||||
if technology.unit and technology.unit.ingredients then
|
if technology.unit and technology.unit.ingredients then
|
||||||
local addit = true
|
local addit = true
|
||||||
for i, ingredient in pairs(technology.unit.ingredients) do
|
for i, ingredient in pairs(technology.unit.ingredients) do
|
||||||
if ingredient[1] == pack then
|
if ingredient[1] == pack then
|
||||||
addit = false
|
addit = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
table.insert(technology.unit.ingredients, { pack, amount })
|
table.insert(technology.unit.ingredients, { pack, amount })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function add_science_pack(technology, pack, amount)
|
local function add_science_pack(technology, pack, amount)
|
||||||
if technology.unit and technology.unit.ingredients then
|
if technology.unit and technology.unit.ingredients then
|
||||||
local addit = true
|
local addit = true
|
||||||
for i, ingredient in pairs(technology.unit.ingredients) do
|
for i, ingredient in pairs(technology.unit.ingredients) do
|
||||||
if ingredient[1] == pack then
|
if ingredient[1] == pack then
|
||||||
addit = false
|
addit = false
|
||||||
ingredient[2] = ingredient[2] + amount
|
ingredient[2] = ingredient[2] + amount
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
table.insert(technology.unit.ingredients, { pack, amount })
|
table.insert(technology.unit.ingredients, { pack, amount })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function remove_science_pack(technology, pack)
|
local function remove_science_pack(technology, pack)
|
||||||
if technology.unit and technology.unit.ingredients then
|
if technology.unit and technology.unit.ingredients then
|
||||||
for i, ingredient in pairs(technology.unit.ingredients) do
|
for i, ingredient in pairs(technology.unit.ingredients) do
|
||||||
if ingredient[1] == pack then
|
if ingredient[1] == pack then
|
||||||
table.remove(technology.unit.ingredients, i)
|
table.remove(technology.unit.ingredients, i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function replace_science_pack(technology, old, new)
|
local function replace_science_pack(technology, old, new)
|
||||||
if technology.unit and technology.unit.ingredients then
|
if technology.unit and technology.unit.ingredients then
|
||||||
local doit = false
|
local doit = false
|
||||||
local amount = 0
|
local amount = 0
|
||||||
for i, ingredient in pairs(technology.unit.ingredients) do
|
for i, ingredient in pairs(technology.unit.ingredients) do
|
||||||
if ingredient[1] == old then
|
if ingredient[1] == old then
|
||||||
doit = true
|
doit = true
|
||||||
amount = ingredient[2] + amount
|
amount = ingredient[2] + amount
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if doit then
|
if doit then
|
||||||
remove_science_pack(technology, old)
|
remove_science_pack(technology, old)
|
||||||
add_science_pack(technology, new, amount)
|
add_science_pack(technology, new, amount)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.replace_science_pack(technology, old, new)
|
function thxbob.lib.tech.replace_science_pack(technology, old, new)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(old) == "string"
|
and type(old) == "string"
|
||||||
and type(new) == "string"
|
and type(new) == "string"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
-- data.raw.tool[old] and
|
-- data.raw.tool[old] and
|
||||||
and data.raw.tool[new]
|
and data.raw.tool[new]
|
||||||
then
|
then
|
||||||
if data.raw.technology[technology].unit then
|
if data.raw.technology[technology].unit then
|
||||||
replace_science_pack(data.raw.technology[technology], old, new)
|
replace_science_pack(data.raw.technology[technology], old, new)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.item_of_type(old, "tool", "Old science pack")
|
thxbob.lib.error.item_of_type(old, "tool", "Old science pack")
|
||||||
thxbob.lib.error.item_of_type(new, "tool", "New science pack")
|
thxbob.lib.error.item_of_type(new, "tool", "New science pack")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.add_new_science_pack(technology, pack, amount)
|
function thxbob.lib.tech.add_new_science_pack(technology, pack, amount)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(pack) == "string"
|
and type(pack) == "string"
|
||||||
and type(amount) == "number"
|
and type(amount) == "number"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
and data.raw.tool[pack]
|
and data.raw.tool[pack]
|
||||||
then
|
then
|
||||||
if data.raw.technology[technology].unit then
|
if data.raw.technology[technology].unit then
|
||||||
add_new_science_pack(data.raw.technology[technology], pack, amount)
|
add_new_science_pack(data.raw.technology[technology], pack, amount)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.item_of_type(pack, "tool", "Science pack")
|
thxbob.lib.error.item_of_type(pack, "tool", "Science pack")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.add_science_pack(technology, pack, amount)
|
function thxbob.lib.tech.add_science_pack(technology, pack, amount)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(pack) == "string"
|
and type(pack) == "string"
|
||||||
and type(amount) == "number"
|
and type(amount) == "number"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
and data.raw.tool[pack]
|
and data.raw.tool[pack]
|
||||||
then
|
then
|
||||||
if data.raw.technology[technology].unit then
|
if data.raw.technology[technology].unit then
|
||||||
add_science_pack(data.raw.technology[technology], pack, amount)
|
add_science_pack(data.raw.technology[technology], pack, amount)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.item_of_type(pack, "tool", "Science pack")
|
thxbob.lib.error.item_of_type(pack, "tool", "Science pack")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.add_science_packs(technology, science_packs)
|
function thxbob.lib.tech.add_science_packs(technology, science_packs)
|
||||||
if type(technology) == "string" and type(science_packs) == "table" then
|
if type(technology) == "string" and type(science_packs) == "table" then
|
||||||
for i, science_pack in pairs(science_packs) do
|
for i, science_pack in pairs(science_packs) do
|
||||||
if
|
if
|
||||||
type(science_pack) == "table"
|
type(science_pack) == "table"
|
||||||
and type(science_pack[1]) == "string"
|
and type(science_pack[1]) == "string"
|
||||||
and data.raw.tool[science_pack[1]]
|
and data.raw.tool[science_pack[1]]
|
||||||
and type(science_pack[2]) == "number"
|
and type(science_pack[2]) == "number"
|
||||||
then
|
then
|
||||||
thxbob.lib.tech.add_science_pack(technology, science_pack[1], science_pack[2])
|
thxbob.lib.tech.add_science_pack(technology, science_pack[1], science_pack[2])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.remove_science_pack(technology, pack)
|
function thxbob.lib.tech.remove_science_pack(technology, pack)
|
||||||
if type(technology) == "string" and type(pack) == "string" and data.raw.technology[technology] then
|
if type(technology) == "string" and type(pack) == "string" and data.raw.technology[technology] then
|
||||||
if data.raw.technology[technology].unit then
|
if data.raw.technology[technology].unit then
|
||||||
remove_science_pack(data.raw.technology[technology], pack)
|
remove_science_pack(data.raw.technology[technology], pack)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.clear_science_packs(technology)
|
function thxbob.lib.tech.clear_science_packs(technology)
|
||||||
if type(technology) == "string" and data.raw.technology[technology] then
|
if type(technology) == "string" and data.raw.technology[technology] then
|
||||||
if data.raw.technology[technology].unit then
|
if data.raw.technology[technology].unit then
|
||||||
data.raw.technology[technology].unit.ingredients = {}
|
data.raw.technology[technology].unit.ingredients = {}
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.set_science_packs(technology, science_packs)
|
function thxbob.lib.tech.set_science_packs(technology, science_packs)
|
||||||
if type(technology) == "string" and data.raw.technology[technology] and type(science_packs) == "table" then
|
if type(technology) == "string" and data.raw.technology[technology] and type(science_packs) == "table" then
|
||||||
thxbob.lib.tech.clear_science_packs(technology)
|
thxbob.lib.tech.clear_science_packs(technology)
|
||||||
thxbob.lib.tech.add_science_packs(technology, science_packs)
|
thxbob.lib.tech.add_science_packs(technology, science_packs)
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.set_science_pack_count(technology, count)
|
function thxbob.lib.tech.set_science_pack_count(technology, count)
|
||||||
if type(technology) == "string" and data.raw.technology[technology] then
|
if type(technology) == "string" and data.raw.technology[technology] then
|
||||||
local prototype = data.raw.technology[technology]
|
local prototype = data.raw.technology[technology]
|
||||||
if prototype.unit then
|
if prototype.unit then
|
||||||
prototype.unit.count = count
|
prototype.unit.count = count
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function has_recipe_unlock(technology, recipe)
|
local function has_recipe_unlock(technology, recipe)
|
||||||
if technology.effects then
|
if technology.effects then
|
||||||
for i, effect in pairs(technology.effects) do
|
for i, effect in pairs(technology.effects) do
|
||||||
if effect.type == "unlock-recipe" and effect.recipe == recipe then
|
if effect.type == "unlock-recipe" and effect.recipe == recipe then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local function add_recipe_unlock(technology, recipe)
|
local function add_recipe_unlock(technology, recipe)
|
||||||
local addit = true
|
local addit = true
|
||||||
if not technology.effects then
|
if not technology.effects then
|
||||||
technology.effects = {}
|
technology.effects = {}
|
||||||
end
|
end
|
||||||
for i, effect in pairs(technology.effects) do
|
for i, effect in pairs(technology.effects) do
|
||||||
if effect.type == "unlock-recipe" and effect.recipe == recipe then
|
if effect.type == "unlock-recipe" and effect.recipe == recipe then
|
||||||
addit = false
|
addit = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
table.insert(technology.effects, { type = "unlock-recipe", recipe = recipe })
|
table.insert(technology.effects, { type = "unlock-recipe", recipe = recipe })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function remove_recipe_unlock(technology, recipe)
|
local function remove_recipe_unlock(technology, recipe)
|
||||||
if technology.effects then
|
if technology.effects then
|
||||||
for i, effect in pairs(technology.effects) do
|
for i, effect in pairs(technology.effects) do
|
||||||
if effect.type == "unlock-recipe" and effect.recipe == recipe then
|
if effect.type == "unlock-recipe" and effect.recipe == recipe then
|
||||||
table.remove(technology.effects, i)
|
table.remove(technology.effects, i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.has_recipe_unlock(technology, recipe)
|
function thxbob.lib.tech.has_recipe_unlock(technology, recipe)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(recipe) == "string"
|
and type(recipe) == "string"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
and data.raw.recipe[recipe]
|
and data.raw.recipe[recipe]
|
||||||
then
|
then
|
||||||
local hasit = false
|
local hasit = false
|
||||||
hasit = has_recipe_unlock(data.raw.technology[technology], recipe)
|
hasit = has_recipe_unlock(data.raw.technology[technology], recipe)
|
||||||
|
|
||||||
return hasit
|
return hasit
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.recipe(recipe)
|
thxbob.lib.error.recipe(recipe)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.add_recipe_unlock(technology, recipe)
|
function thxbob.lib.tech.add_recipe_unlock(technology, recipe)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(recipe) == "string"
|
and type(recipe) == "string"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
and data.raw.recipe[recipe]
|
and data.raw.recipe[recipe]
|
||||||
then
|
then
|
||||||
add_recipe_unlock(data.raw.technology[technology], recipe)
|
add_recipe_unlock(data.raw.technology[technology], recipe)
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.recipe(recipe)
|
thxbob.lib.error.recipe(recipe)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.remove_recipe_unlock(technology, recipe)
|
function thxbob.lib.tech.remove_recipe_unlock(technology, recipe)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(recipe) == "string"
|
and type(recipe) == "string"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
-- data.raw.recipe[recipe] --don't check to see if something we're removing exists.
|
-- data.raw.recipe[recipe] --don't check to see if something we're removing exists.
|
||||||
then
|
then
|
||||||
remove_recipe_unlock(data.raw.technology[technology], recipe)
|
remove_recipe_unlock(data.raw.technology[technology], recipe)
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.recipe(recipe)
|
thxbob.lib.error.recipe(recipe)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function add_prerequisite(technology, prerequisite)
|
local function add_prerequisite(technology, prerequisite)
|
||||||
local addit = true
|
local addit = true
|
||||||
if technology.prerequisites then
|
if technology.prerequisites then
|
||||||
for i, check in ipairs(technology.prerequisites) do
|
for i, check in ipairs(technology.prerequisites) do
|
||||||
if check == prerequisite then
|
if check == prerequisite then
|
||||||
addit = false
|
addit = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
technology.prerequisites = {}
|
technology.prerequisites = {}
|
||||||
end
|
end
|
||||||
if addit then
|
if addit then
|
||||||
table.insert(technology.prerequisites, prerequisite)
|
table.insert(technology.prerequisites, prerequisite)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function remove_prerequisite(technology, prerequisite)
|
local function remove_prerequisite(technology, prerequisite)
|
||||||
if technology.prerequisites then
|
if technology.prerequisites then
|
||||||
for i, check in ipairs(technology.prerequisites) do
|
for i, check in ipairs(technology.prerequisites) do
|
||||||
if check == prerequisite then
|
if check == prerequisite then
|
||||||
table.remove(technology.prerequisites, i)
|
table.remove(technology.prerequisites, i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function replace_prerequisite(technology, old, new)
|
local function replace_prerequisite(technology, old, new)
|
||||||
if technology.prerequisites then
|
if technology.prerequisites then
|
||||||
for i, prerequisite in ipairs(technology.prerequisites) do
|
for i, prerequisite in ipairs(technology.prerequisites) do
|
||||||
if prerequisite == old then
|
if prerequisite == old then
|
||||||
remove_prerequisite(technology, old)
|
remove_prerequisite(technology, old)
|
||||||
add_prerequisite(technology, new)
|
add_prerequisite(technology, new)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.replace_prerequisite(technology, old, new)
|
function thxbob.lib.tech.replace_prerequisite(technology, old, new)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(old) == "string"
|
and type(old) == "string"
|
||||||
and type(new) == "string"
|
and type(new) == "string"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
-- data.raw.technology[old] and
|
-- data.raw.technology[old] and
|
||||||
and data.raw.technology[new]
|
and data.raw.technology[new]
|
||||||
then
|
then
|
||||||
replace_prerequisite(data.raw.technology[technology], old, new)
|
replace_prerequisite(data.raw.technology[technology], old, new)
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.technology(old, "Old prerequisite", "Old prerequisite technology")
|
thxbob.lib.error.technology(old, "Old prerequisite", "Old prerequisite technology")
|
||||||
thxbob.lib.error.technology(new, "New prerequisite", "New prerequisite technology")
|
thxbob.lib.error.technology(new, "New prerequisite", "New prerequisite technology")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.add_prerequisite(technology, prerequisite)
|
function thxbob.lib.tech.add_prerequisite(technology, prerequisite)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(prerequisite) == "string"
|
and type(prerequisite) == "string"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
and data.raw.technology[prerequisite]
|
and data.raw.technology[prerequisite]
|
||||||
then
|
then
|
||||||
add_prerequisite(data.raw.technology[technology], prerequisite)
|
add_prerequisite(data.raw.technology[technology], prerequisite)
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.technology(prerequisite, "Prerequisite", "Prerequisite technology")
|
thxbob.lib.error.technology(prerequisite, "Prerequisite", "Prerequisite technology")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.remove_prerequisite(technology, prerequisite)
|
function thxbob.lib.tech.remove_prerequisite(technology, prerequisite)
|
||||||
if
|
if
|
||||||
type(technology) == "string"
|
type(technology) == "string"
|
||||||
and type(prerequisite) == "string"
|
and type(prerequisite) == "string"
|
||||||
and data.raw.technology[technology]
|
and data.raw.technology[technology]
|
||||||
-- data.raw.technology[prerequisite]
|
-- data.raw.technology[prerequisite]
|
||||||
then
|
then
|
||||||
remove_prerequisite(data.raw.technology[technology], prerequisite)
|
remove_prerequisite(data.raw.technology[technology], prerequisite)
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology)
|
thxbob.lib.error.technology(technology)
|
||||||
thxbob.lib.error.technology(prerequisite, "Prerequisite", "Prerequisite technology")
|
thxbob.lib.error.technology(prerequisite, "Prerequisite", "Prerequisite technology")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.hide(technology_name)
|
function thxbob.lib.tech.hide(technology_name)
|
||||||
if type(technology_name) == "string" and data.raw.technology[technology_name] then
|
if type(technology_name) == "string" and data.raw.technology[technology_name] then
|
||||||
local technology = data.raw.technology[technology_name]
|
local technology = data.raw.technology[technology_name]
|
||||||
technology.hidden = true
|
technology.hidden = true
|
||||||
technology.enabled = false
|
technology.enabled = false
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology_name)
|
thxbob.lib.error.technology(technology_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.ignore_tech_cost_multiplier(technology_name, ignore)
|
function thxbob.lib.tech.ignore_tech_cost_multiplier(technology_name, ignore)
|
||||||
if type(technology_name) == "string" and type(ignore) == "boolean" then
|
if type(technology_name) == "string" and type(ignore) == "boolean" then
|
||||||
local technology = data.raw.technology[technology_name]
|
local technology = data.raw.technology[technology_name]
|
||||||
if technology then
|
if technology then
|
||||||
technology.ignore_tech_cost_multiplier = ignore
|
technology.ignore_tech_cost_multiplier = ignore
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(technology_name)
|
thxbob.lib.error.technology(technology_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.technology_icon_constant(technology_icon, constant_icon, x, y)
|
function thxbob.lib.tech.technology_icon_constant(technology_icon, constant_icon, x, y)
|
||||||
local scale = 0.5
|
local scale = 0.5
|
||||||
local xshift = x or 64
|
local xshift = x or 64
|
||||||
local yshift = y or 64
|
local yshift = y or 64
|
||||||
if type(technology_icon) == "table" and technology_icon.icon and technology_icon.icon_size then
|
if type(technology_icon) == "table" and technology_icon.icon and technology_icon.icon_size then
|
||||||
local icons = {
|
local icons = {
|
||||||
technology_icon,
|
technology_icon,
|
||||||
{
|
{
|
||||||
icon = constant_icon,
|
icon = constant_icon,
|
||||||
icon_size = 128,
|
icon_size = 128,
|
||||||
scale = scale,
|
scale = scale,
|
||||||
shift = { xshift * scale, yshift * scale },
|
shift = { xshift * scale, yshift * scale },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return icons
|
return icons
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log(technology_icon .. " not given in required table format")
|
log(technology_icon .. " not given in required table format")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function thxbob.lib.tech.technology_line_icon_constant(technology_line, first, last, technology_icon, constant_icon)
|
function thxbob.lib.tech.technology_line_icon_constant(technology_line, first, last, technology_icon, constant_icon)
|
||||||
local scale = 0.5
|
local scale = 0.5
|
||||||
if type(technology_icon) == "table" and technology_icon.icon and technology_icon.icon_size then
|
if type(technology_icon) == "table" and technology_icon.icon and technology_icon.icon_size then
|
||||||
for i = first, last do
|
for i = first, last do
|
||||||
local tech_name = technology_line .. "-" .. i
|
local tech_name = technology_line .. "-" .. i
|
||||||
if data.raw.technology[tech_name] then
|
if data.raw.technology[tech_name] then
|
||||||
data.raw.technology[tech_name].icons = {
|
data.raw.technology[tech_name].icons = {
|
||||||
technology_icon,
|
technology_icon,
|
||||||
{
|
{
|
||||||
icon = constant_icon,
|
icon = constant_icon,
|
||||||
icon_size = 128,
|
icon_size = 128,
|
||||||
scale = scale,
|
scale = scale,
|
||||||
shift = { 64 * scale, 64 * scale },
|
shift = { 64 * scale, 64 * scale },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
thxbob.lib.error.technology(tech_name)
|
thxbob.lib.error.technology(tech_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
log(debug.traceback())
|
log(debug.traceback())
|
||||||
log(technology_icon .. " not given in required table format")
|
log(technology_icon .. " not given in required table format")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue