bztin2/tin-recipe.lua
2025-05-03 02:28:36 -07:00

578 lines
17 KiB
Lua

-- Aluminum smelting
local item_sounds = require('__base__.prototypes.item_sounds')
local util = require("data-util");
local futil = require("util");
if (not mods["pyrawores"] and not mods["bobplates"] and not mods["angelssmelting"] ) then
data:extend({
{
type = "recipe",
name = "tin-plate",
category = "smelting",
order = "d[tin-plate]",
icons = (mods["Krastorio2"] and
{
{ icon = "__bztin__/graphics/icons/tin-plate.png", icon_size = 128},
{ icon = "__bztin__/graphics/icons/tin-ore.png", icon_size = 64, scale=0.125, shift= {-8, -8}},
} or {
{ icon = "__bztin__/graphics/icons/tin-plate.png", icon_size = 128},
}
),
-- (mods["Krastorio2"] and
-- {
-- main_product = "tin-plate",
-- enabled = true,
-- energy_required = 12,
-- ingredients = {{"tin-ore", 10}},
-- results = {
-- {type="item", name = "tin-plate", amount=5}
-- }
-- } or
main_product = "tin-plate",
enabled = true,
energy_required = 2.4,
ingredients = {util.item("tin-ore", 1)},
results = {
{type="item", name = "tin-plate", amount=1}
},
allow_productivity = true,
-- expensive =
-- {
-- main_product = "tin-plate",
-- enabled = true,
-- energy_required = 4.8,
-- ingredients = {{"tin-ore", 1}},
-- results = {
-- {type="item", name = "tin-plate", amount=1},
-- }
-- }
},
{
type = "item",
name = "tin-plate",
icon = "__bztin__/graphics/icons/tin-plate.png",
icon_size = 128,
subgroup = "raw-material",
order = "b[tin-plate]",
stack_size = util.get_stack_size(100),
weight = 1*kg,
inventory_move_sound = item_sounds.metal_small_inventory_move,
pick_sound = item_sounds.metal_small_inventory_pickup,
drop_sound = item_sounds.metal_small_inventory_move,
},
})
local solder_ingredients = {util.item("tin-plate", 4), util.item("copper-plate", 1)}
local solder_casting = {util.fluid("molten-tin", 40), util.fluid("molten-copper", 10)}
if mods.bzlead then
solder_ingredients = {util.item("tin-plate", 3), util.item("lead-plate", 2)}
solder_casting = {util.fluid("molten-tin", 30), util.fluid("molten-lead", 20)}
end
data:extend({
{
type = "item",
name = "solder",
icon = "__bztin__/graphics/icons/solder.png",
icon_size = 128,
subgroup = "intermediate-product",
order = "b[solder]",
stack_size = util.get_stack_size(100),
weight = 1*kg,
inventory_move_sound = item_sounds.wire_inventory_move,
pick_sound = item_sounds.wire_inventory_pickup,
drop_sound = item_sounds.wire_inventory_move,
},
{
type = "recipe",
name = "solder",
category = mods["space-age"] and "electronics" or "crafting",
order = "d[solder]",
enabled = true,
energy_required = 1,
ingredients = solder_ingredients,
results = {util.item("solder", 4)},
allow_productivity = true,
}
})
if mods["space-age"] then
data:extend({
{
type = "recipe",
name = "casting-solder",
category = "metallurgy",
subgroup = "vulcanus-processes",
order = "z[casting]-d[casting-solder]",
icons = {
{icon = "__bztin__/graphics/icons/solder.png", icon_size = 128, shift={-4,4}},
{icon = "__bztin__/graphics/icons/molten-tin-sa.png", icon_size = 64, shift={4,-4}},
},
enabled = false,
ingredients = solder_casting,
energy_required = 10,
allow_decomposition = false,
results = {{type = "item", name = "solder", amount = 40}},
allow_productivity = true
},
{
type = "item-subgroup",
name = "alloy-separation",
group = "intermediate-products",
},
{
type = "technology",
name = "alloy-separation",
icons = {
{icon = "__bztin__/graphics/icons/solder.png", icon_size = 128, scale = 0.33, shift = {0,-6}},
{icon = "__bztin__/graphics/icons/tin-plate.png", icon_size = 128, scale = 0.25, shift = {-6,4}},
mods.bzlead and {icon = "__bzlead__/graphics/icons/lead-plate.png", icon_size = 64, scale = 0.5, shift = {6,4}} or
{icon = "__base__/graphics/icons/copper-plate.png", icon_size = 64, scale = 0.5, shift = {6,4}},
},
effects = {},
prerequisites = {"metallurgic-science-pack", "electromagnetic-science-pack"},
unit = {
count = 250, time = 30,
ingredients = {
{"chemical-science-pack", 1},
{"electromagnetic-science-pack", 1},
{"metallurgic-science-pack", 1},
}
}
},
})
util.add_effect("foundry", { type = "unlock-recipe", recipe = "casting-solder" })
end
if mods.bzaluminum and not mods.bzlead then
data:extend({
{
type = "technology",
name = "solder",
icon = "__bztin__/graphics/icons/solder.png",
icon_size = 128,
effects = {
{ type = "unlock-recipe", recipe = "solder" },
},
unit = {
count = 10, time = 15,
ingredients = {{"automation-science-pack", 1}},
},
prerequisites = {"copper-processing"},
},
})
util.add_unlock_force("solder", "solder")
util.add_prerequisite("electronics", "solder")
if mods["aai-industry"] or mods.Krastorio2 then
util.add_prerequisite("basic-fluid-handling", "solder")
util.add_prerequisite("kr-basic-fluid-handling", "solder")
else
util.add_unlock_force("solder", "pipe-to-ground")
end
if mods.Krastorio2 then
util.set_tech_recipe("solder", {{"basic-tech-card", 1}})
end
end
data:extend({
{
type = "fluid",
name = "organotins",
subgroup = "fluid",
default_temperature = 25,
heat_capacity = "0.1kJ",
base_color = {r=0.75, g=0.65, b=0.1},
flow_color = {r=0.7, g=1, b=0.1},
icon = "__bztin__/graphics/icons/organotins.png",
icon_size = 64,
order = "a[fluid]-f[organotins]"
},
{
type = "recipe",
name = "organotins",
category = "chemistry",
subgroup = "fluid-recipes",
order = "h[organotins]",
enabled = false,
energy_required = 5,
ingredients = {util.item("tin-plate", 3), {type="fluid", name="petroleum-gas", amount=20}},
results = {{type="fluid", name="organotins", amount=50}},
allow_productivity = true,
crafting_machine_tint = {
primary = {r = 1.000, g = 0.995, b = 0.089, a = 1.000},
secondary = {r = 1.000, g = 0.975, b = 0.890, a = 1.000},
tertiary = {r = 0.825, g = 0.740, b = 0.810, a = 1.000},
quaternary = {r = 0.950, g = 1.000, b = 0.350, a = 1.000},
}
},
{
type = "technology",
name = "organotin-chemistry",
icon = "__bztin__/graphics/technology/organotins.png",
icon_size = 256,
effects = {
{ type = "unlock-recipe", recipe = "organotins" },
},
unit = {
count = 50, time = 30,
ingredients = {{"automation-science-pack", 1}, {"logistic-science-pack", 1}},
},
prerequisites = {"oil-processing"},
order = "b-b",
},
})
util.add_prerequisite("plastics", "organotin-chemistry")
if util.me.use_cable() then
data:extend({
{
type = "item",
name = "tinned-cable",
icon = "__bztin__/graphics/icons/tinned-cable.png",
icon_size = 64, icon_mipmaps = 4,
subgroup = util.cablesg,
order = "b[tinned-cable]",
stack_size = util.get_stack_size(100),
weight = 1*kg,
inventory_move_sound = item_sounds.wire_inventory_move,
pick_sound = item_sounds.wire_inventory_pickup,
drop_sound = item_sounds.wire_inventory_move,
},
{
type = "recipe",
name = "tinned-cable",
category = "crafting",
order = "d[tinned-cable]",
enabled = false,
energy_required = 1.5,
ingredients = {util.item("tin-plate", 1), util.item("copper-cable", 8)},
allow_productivity = true,
results = {util.item("tinned-cable", 8)},
},
{
type = "technology",
name = "tinned-cable",
icon = "__bztin__/graphics/icons/tinned-cable.png",
icon_size = 64, icon_mipmaps = 4,
effects = {
{ type = "unlock-recipe", recipe = "tinned-cable" },
},
unit = {
count = 50, time = 15,
ingredients = {{"automation-science-pack", 1}, {"logistic-science-pack", 1}},
},
prerequisites = {"logistic-science-pack"},
order = "b-b",
},
})
util.add_prerequisite("tinned-cable", "copper-processing")
if util.me.get_setting("aps-planet") == "vulcanus" then
util.set_prerequisite("tinned-cable", {"automation-science-pack"})
util.set_tech_recipe("tinned-cable", {{"automation-science-pack", 1}})
end
end
if util.me.use_bronze() then
local bronze_i = {}
bronze_i["copper-plate"] = 17
bronze_i["tin-plate"] = 3
data:extend({
{
type = "item",
name = "bronze-plate",
icon = "__bztin__/graphics/icons/bronze-plate.png",
icon_size = 128,
subgroup = "intermediate-product",
order = "b[bronze-plate]",
stack_size = util.get_stack_size(100),
weight = 1*kg,
inventory_move_sound = item_sounds.metal_small_inventory_move,
pick_sound = item_sounds.metal_small_inventory_pickup,
drop_sound = item_sounds.metal_small_inventory_move,
},
{
type = "recipe",
name = "bronze-plate",
category = "advanced-crafting",
order = "d[bronze-plate]",
enabled = false,
energy_required = 60,
ingredients = {},
results = {util.item("bronze-plate", 20)},
allow_productivity = true,
},
})
for item, count in pairs(bronze_i) do
util.add_ingredient("bronze-plate", item, count, {force=true})
end
if mods.bzfoundry and data.raw.item["foundry"] then
util.add_effect("foundry", { type = "unlock-recipe", recipe = "bronze-plate" })
util.add_prerequisite("fast-inserter", "foundry")
util.set_to_founding("bronze-plate", {force=true})
elseif mods["space-age"] then
data:extend({
{
type = "recipe",
name = "casting-bronze",
category = "metallurgy",
subgroup = "vulcanus-processes",
order = "b[casting]-d[casting-tin-bronze]",
icons = {
{icon = "__bztin__/graphics/icons/bronze-plate.png", icon_size = 128, shift={-4,4}},
{icon = "__space-age__/graphics/icons/fluid/molten-copper.png", icon_size = 64, shift={4,-4}},
},
enabled = false,
ingredients =
{
{type = "fluid", name = "molten-copper", amount = bronze_i["copper-plate"], fluidbox_multiplier = 10},
{type = "fluid", name = "molten-tin", amount = bronze_i["tin-plate"], fluidbox_multiplier = 10},
},
energy_required = 2.4,
allow_decomposition = false,
results = {{type = "item", name = "bronze-plate", amount = 2}},
allow_productivity = true
},
})
util.add_effect("foundry", { type = "unlock-recipe", recipe = "casting-bronze" })
util.add_effect("automation", { type = "unlock-recipe", recipe = "bronze-plate" })
else
util.add_effect("automation", { type = "unlock-recipe", recipe = "bronze-plate" })
end
end
if mods["space-age"] then
data:extend({
{
type = "fluid",
name = "tin-sulfides",
icons = {{ icon="__base__/graphics/icons/fluid/steam.png", icon_size=64, tint={r=.9, g=.9, b=.1, a=.7}}},
subgroup = "fluid",
order = "b[new-fluid]-b[vulcanus]-t[tin-sulfides]",
default_temperature = 315,
max_temperature = 2000,
gas_temperature = 300,
heat_capacity = ".1kJ",
base_color = {1,1,0},
flow_color = {.95,.99,.1},
},
{
type = "recipe",
name = "tin-sulfides",
subgroup = "vulcanus-processes",
category = "chemistry",
main_product = "tin-sulfides",
enabled = false,
allow_productivity = true,
energy_required = 1,
ingredients = {
util.fluid("steam", 10),
util.fluid("sulfuric-acid", 20),
},
results = {
util.fluid("tin-sulfides", 20),
util.fluid("sulfuric-acid", 10),
},
surface_conditions =
{
{
property = "pressure",
min = 4000,
max = 4000
}
},
},
{
type = "recipe",
name = "tin-sulfide-processing",
subgroup = "vulcanus-processes",
category = "chemistry",
main_product = "tin-ore",
enabled = false,
allow_productivity = true,
energy_required = 2,
icons = {
{ icon="__bztin__/graphics/icons/tin-ore.png", icon_size=64},
{ icon="__base__/graphics/icons/fluid/steam.png", icon_size=64, tint={r=.9, g=.9, b=.1, a=.7}, scale=0.5, shift={-8,-8}},
},
ingredients = mods.bztitanium and {
util.fluid("tin-sulfides", 40),
util.fluid("vacuum", 1),
} or {
util.fluid("tin-sulfides", 40),
},
results = {
util.item("tin-ore", 2),
util.item("sulfur", 1),
}
},
{
type = "fluid",
name = "molten-tin",
icon = "__bztin__/graphics/icons/molten-tin-sa.png",
subgroup = "fluid",
order = "b[new-fluid]-b[vulcanus]-d[molten-tin]",
default_temperature = 1500,
max_temperature = 2000,
heat_capacity = "0.01kJ",
base_color = {.6, 0.4, 0.23},
flow_color = {0.6, 0.4, 0.23},
auto_barrel = false
},
{
type = "recipe",
name = "molten-tin",
category = "metallurgy",
subgroup = "vulcanus-processes",
order = "a[melting]-d[molten-tin]",
auto_recycle = false,
enabled = false,
ingredients =
{
{type = "item", name = "tin-ore", amount = 100},
{type = "item", name = "calcite", amount = 1},
},
energy_required = 48,
results = {{type = "fluid", name = "molten-tin", amount = 1000}},
allow_productivity = true,
hide_from_signal_gui = false,
main_product = "molten-tin",
},
{
type = "recipe",
name = "casting-tin",
category = "metallurgy",
subgroup = "vulcanus-processes",
order = "b[casting]-d[casting-tin]",
icons = {
{icon = "__bztin__/graphics/icons/tin-plate.png", icon_size = 128, shift={-4,4}},
{icon = "__bztin__/graphics/icons/molten-tin-sa.png", icon_size = 64, shift={4,-4}},
},
enabled = false,
ingredients =
{
{type = "fluid", name = "molten-tin", amount = 20, fluidbox_multiplier = 10},
},
energy_required = 2.4,
allow_decomposition = false,
results = {{type = "item", name = "tin-plate", amount = 2}},
allow_productivity = true
},
})
util.add_unlock("foundry", "casting-tin")
util.add_unlock("foundry", "molten-tin")
util.add_unlock("foundry", "tin-sulfides")
util.add_unlock("foundry", "tin-sulfide-processing")
local space_age_item_sounds = require("__space-age__.prototypes.item_sounds")
data:extend({
{
type = "item",
name = "jellyskin",
icon = "__bztin__/graphics/icons/jellyskin.png",
icon_size = 64,
subgroup = "agriculture-processes",
order = "b[agriulture]-d[tin]",
stack_size = util.get_stack_size(100),
spoil_result = "spoilage",
spoil_ticks = 54000,
fuel_category = "chemical",
fuel_value = "1MJ",
inventory_move_sound = space_age_item_sounds.agriculture_inventory_move,
pick_sound = space_age_item_sounds.agriculture_inventory_pickup,
drop_sound = space_age_item_sounds.agriculture_inventory_move,
stack_size = 100,
default_import_location = "gleba",
weight = 1*kg,
},
{
type = "recipe",
name = "jellyskin-processing",
category = "organic",
subgroup = "agriculture-processes",
order = "e[agriculture]-a[tin]",
icons = {
{icon = "__bztin__/graphics/icons/organotins.png", icon_size = 64},
{icon = "__bztin__/graphics/icons/jellyskin.png", icon_size=64, shift={0,-8}},
},
enabled = false,
allow_productivity = true,
ingredients =
{
util.item("jellyskin", 1),
},
energy_required = 8/3,
allow_decomposition = false,
results = {
util.fluid("organotins", 100),
},
main_product="organotins",
},
{
type = "recipe",
name = "tin-from-organotins",
category = "organic",
subgroup = "agriculture-processes",
order = "e[agriculture]-a[tin]",
icons = {
{icon = "__bztin__/graphics/icons/organotins.png", icon_size = 64},
{icon = "__bztin__/graphics/icons/tin-ore.png", icon_size=64, scale=0.333, shift={0,8}},
},
enabled = false,
allow_productivity = true,
ingredients =
{
util.fluid("organotins", 100),
util.item("pentapod-egg"),
},
energy_required = 16/3,
allow_decomposition = false,
results = {
util.item("tin-ore", 6),
},
main_product="tin-ore",
},
})
util.add_product("jellynut-processing", util.item("jellyskin", 1, .25))
util.add_ingredient("bioplastic", "organotins", 7.5)
util.set_icons("bioplastic", {
{icon = "__space-age__/graphics/icons/bioplastic.png", icon_size = 64},
{icon = "__bztin__/graphics/icons/organotins.png", icon_size = 64, scale=.25, shift={0,-8}},
})
util.add_unlock("biochamber", "jellyskin-processing")
util.add_unlock("biochamber", "tin-from-organotins")
end
if mods["planet-muluna"] then -- moon where you get resources from crushing on the surface
data:extend({
{
type = "recipe",
name = "metallic-asteroid-crushing-tin",
icons = {
{icon = "__space-age__/graphics/icons/metallic-asteroid-crushing.png", icon_size=64},
{icon="__bztin__/graphics/icons/tin-ore.png", icon_size=64, scale =0.25, shift = {0,4}},
},
category = "crushing",
subgroup="space-crushing",
order = "b-a-a",
auto_recycle = false,
enabled = false,
ingredients =
{
{type = "item", name = "metallic-asteroid-chunk", amount = 1},
},
energy_required = 2,
results =
{
{type = "item", name = "tin-ore", amount = 15},
{type = "item", name = "metallic-asteroid-chunk", amount = 1, probability = 0.2}
},
allow_productivity = true,
allow_decomposition = false
},
})
util.add_unlock("space-platform-thruster", "metallic-asteroid-crushing-tin")
util.add_to_productivity_research("asteroid-productivity", "metallic-asteroid-crushing-tin")
end
end