Files
factorio-clusterio/c-inv_0.0.2/data.lua
T

102 lines
3.0 KiB
Lua

require("util")
require("config")
function ChangePictureFilename(entity, path, newFilename)
if newFilename ~= nil then
local filenamePath = entity[path[1]]
for i = 2, #path do
filenamePath = filenamePath[path[i]]
end
filenamePath.filename = newFilename
end
end
function MakeLogisticEntity(entity, name, pictureFilename, pictureTablePath, iconPath)
entity.name = name
entity.minable.result = name
--if no picture is defined then use the default one
ChangePictureFilename(entity, pictureTablePath, pictureFilename)
--if no icon is defined then use the default one
entity.icon = iconPath or entity.icon
-- add the entity to a technology so it can be unlocked
local wasAddedToTech = AddEntityToTech("construction-robotics", name)
data:extend(
{
-- add the entity
entity,
-- add the recipe for the entity
{
type = "recipe",
name = name,
--if the recipe was succesfully attached to the tech then the recipe
--shouldn't be enabled to begin with.
--but if the recipe isn't attached to a tech then it should
--be enabled to begin with because otherwise the player can never use the item ingame
enabled = not wasAddedToTech,
ingredients =
{
{"steel-chest", 1},
{"electronic-circuit", 3},
{"advanced-circuit", 1}
},
result = name,
requester_paste_multiplier = 4
},
{
type = "item",
name = name,
icon = entity.icon,
flags = {"goes-to-quickbar"},
subgroup = "storage",
order = "a[items]-b["..name.."]",
place_result = name,
stack_size = 50
}
})
end
--adds a recipe to a tech and returns true or if that fails returns false
function AddEntityToTech(techName, name)
--can't add the recipe to the tech if it doesn't exist
if data.raw["technology"][techName] ~= nil then
local effects = data.raw["technology"][techName].effects
--if another mod removed the effects or made it nil then make a new table to put the recipe in
effects = effects or {}
--insert the recipe as an unlock when the research is done
effects[#effects + 1] = {
type = "unlock-recipe",
recipe = name
}
--if a new table for the effects is made then the effects has to be attached to the
-- tech again because the table won't otherwise be owned by the tech
data.raw["technology"][techName].effects = effects
return true
end
return false
end
--make chests
MakeLogisticEntity(table.deepcopy(data.raw["logistic-container"]["logistic-chest-requester"]), OUTPUT_CHEST_NAME, OUTPUT_CHEST_PICTURE_PATH, { "picture" }, OUTPUT_CHEST_ICON_PATH)
MakeLogisticEntity(table.deepcopy(data.raw["container"]["iron-chest"]), INPUT_CHEST_NAME, INPUT_CHEST_PICTURE_PATH, { "picture" }, INPUT_CHEST_ICON_PATH)
--make tanks
MakeLogisticEntity(table.deepcopy(data.raw["storage-tank"]["storage-tank"]), OUTPUT_TANK_NAME, OUTPUT_TANK_PICTURE_PATH, { "pictures", "picture", "sheet" }, OUTPUT_TANK_ICON_PATH)
MakeLogisticEntity(table.deepcopy(data.raw["storage-tank"]["storage-tank"]), INPUT_TANK_NAME, INPUT_TANK_PICTURE_PATH, { "pictures", "picture", "sheet" }, INPUT_TANK_ICON_PATH)