hades_laboratory/deoxyribonucleic_cultivator...

266 lines
9.7 KiB
Lua

----------------------------------
-- Deoxyribonucleic Cultivator --
----------------------------------
------------ Ver 2.0 -------------
-----------------------
-- Initial Functions --
-----------------------
local S = laboratory.translator;
laboratory.deoxyribonucleic_cultivator = appliances.appliance:new(
{
node_name_inactive = "hades_laboratory:deoxyribonucleic_cultivator",
node_name_active = "hades_laboratory:deoxyribonucleic_cultivator_active",
node_description = S("Deoxyribonucleic cultivator"),
node_help = S("Connect to power 100 EU (LV) and water.").."\n"..S("Keep process running.").."\n"..S("Cultivate miniature fragments of deoxyribonucletic acid from prepared bones.").."\n"..S("Use glass bottle of polymerases to cultivate miniature fragments of deoxyribonucletic acid.").."\n"..S("Use bones dust for more effectivity."),
output_stack_size = 2,
stoppable_production = false,
stoppable_consumption = false,
})
local deoxyribonucleic_cultivator = laboratory.deoxyribonucleic_cultivator
deoxyribonucleic_cultivator:power_data_register(
{
["LV_power"] = {
demand = 100,
run_speed = 1,
disable = {"no_power"},
},
["power_generators_power"] = {
demand = 100,
run_speed = 1,
disable = {"no_power"},
},
["no_power"] = {
run_speed = 0,
},
})
deoxyribonucleic_cultivator:supply_data_register(
{
["water_pipe_liquid"] = {
},
})
deoxyribonucleic_cultivator:item_data_register(
{
["tube_item"] = {
},
})
--------------
-- Formspec --
--------------
function deoxyribonucleic_cultivator:get_formspec(meta, production_percent, consumption_percent)
local progress = "image[3.6,0.5;5.5,0.95;appliances_production_progress_bar.png^[transformR270]]";
if production_percent then
progress = "image[3.6,0.5;5.5,0.95;appliances_production_progress_bar.png^[lowpart:" ..
(production_percent) ..
":appliances_production_progress_bar_full.png^[transformR270]]";
end
if consumption_percent then
progress = progress.."image[3.6,1.35;5.5,0.95;appliances_consumption_progress_bar.png^[lowpart:" ..
(consumption_percent) ..
":appliances_consumption_progress_bar_full.png^[transformR270]]";
else
progress = progress.."image[3.6,1.35;5.5,0.95;appliances_consumption_progress_bar.png^[transformR270]]";
end
local formspec = "formspec_version[3]" .. "size[12.75,8.5]" ..
"background[-1.25,-1.25;15,10;appliances_appliance_formspec.png]" ..
progress..
"list[current_player;main;0.3,3;10,4;]" ..
"list[context;"..self.input_stack..";2,0.25;1,1;]" ..
"list[context;"..self.use_stack..";2,1.5;1,1;]" ..
"list[context;"..self.output_stack..";9.75,0.25;1,2;]" ..
"listring[current_player;main]" ..
"listring[context;"..self.input_stack.."]" ..
"listring[current_player;main]" ..
"listring[context;"..self.use_stack.."]" ..
"listring[current_player;main]"..
"listring[context;"..self.output_stack.."]" ..
"listring[current_player;main]";
return formspec;
end
----------
-- Node --
----------
local node_def = {
paramtype2 = "facedir",
groups = {cracky = 2},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = hades_sounds.node_sound_stone_defaults(),
drawtype = "node",
}
local node_inactive = {
tiles = {
"laboratory_deoxyribonucleic_cultivator_top.png",
"laboratory_deoxyribonucleic_cultivator_bottom.png",
"laboratory_deoxyribonucleic_cultivator_side.png",
"laboratory_deoxyribonucleic_cultivator_side.png",
"laboratory_deoxyribonucleic_cultivator_side.png",
"laboratory_deoxyribonucleic_cultivator_front.png"
},
}
local node_active = {
tiles = {
"laboratory_deoxyribonucleic_cultivator_top.png",
"laboratory_deoxyribonucleic_cultivator_bottom.png",
"laboratory_deoxyribonucleic_cultivator_side.png",
"laboratory_deoxyribonucleic_cultivator_side.png",
"laboratory_deoxyribonucleic_cultivator_side.png",
{
image = "laboratory_deoxyribonucleic_cultivator_front_active.png",
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
}
}
},
}
deoxyribonucleic_cultivator:register_nodes(node_def, node_inactive, node_active)
-------------------------
-- Recipe Registration --
-------------------------
appliances.register_craft_type("laboratory_deoxyribonucleic_cultivator", {
description = S("Cultivating (by chance)"),
width = 1,
height = 1,
})
appliances.register_craft_type("laboratory_deoxyribonucleic_cultivator_use", {
description = S("Use for cultivating"),
width = 1,
height = 1,
})
deoxyribonucleic_cultivator:recipe_register_usage(
"hades_laboratory:glass_bottle_of_polymerase",
{
outputs = {"hades_vessels:glass_bottle"},
consumption_time = 360,
production_step_size = 1,
});
deoxyribonucleic_cultivator:recipe_register_usage(
"hades_laboratory:steel_bottle_of_polymerase",
{
outputs = {"hades_vessels:steel_bottle"},
consumption_time = 360*7, -- more efective when glass bottle of polymerases
production_step_size = 1,
});
local crushed_bones_dinosaur_outputs = {};
local crushed_bones_iceage_outputs = {};
local crushed_bones_recent_outputs = {};
local dust_bones_dinosaur_outputs = {};
local dust_bones_iceage_outputs = {};
local dust_bones_recent_outputs = {};
if laboratory.have_paleotest then
for key, name in pairs(paleotest.dinosaurs) do
table.insert(crushed_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 3");
table.insert(dust_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 4");
end
for key, name in pairs(paleotest.iceage_animals) do
table.insert(crushed_bones_iceage_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_iceage_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_iceage_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_iceage_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_iceage_outputs, "hades_laboratory:dna_fragments_"..key.." 3");
table.insert(dust_bones_iceage_outputs, "hades_laboratory:dna_fragments_"..key.." 4");
end
for key, name in pairs(paleotest.water_dinosaurs) do
table.insert(crushed_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 3");
table.insert(dust_bones_dinosaur_outputs, "hades_laboratory:dna_fragments_"..key.." 4");
end
for key, name in pairs(paleotest.hades_recent_fauna) do
table.insert(crushed_bones_recent_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_recent_outputs, "hades_laboratory:dna_fragments_"..key);
table.insert(crushed_bones_recent_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_recent_outputs, "hades_laboratory:dna_fragments_"..key.." 2");
table.insert(dust_bones_recent_outputs, "hades_laboratory:dna_fragments_"..key.." 3");
table.insert(dust_bones_recent_outputs, "hades_laboratory:dna_fragments_"..key.." 4");
end
deoxyribonucleic_cultivator:recipe_register_input(
"hades_laboratory:crushed_bones_dinosaur",
{
inputs = 1,
outputs = crushed_bones_dinosaur_outputs,
production_time = 360,
consumption_step_size = 1,
});
deoxyribonucleic_cultivator:recipe_register_input(
"hades_laboratory:crushed_bones_iceage",
{
inputs = 1,
outputs = crushed_bones_iceage_outputs,
production_time = 360,
consumption_step_size = 1,
});
deoxyribonucleic_cultivator:recipe_register_input(
"hades_laboratory:crushed_bones_recent",
{
inputs = 1,
outputs = crushed_bones_recent_outputs,
production_time = 360,
consumption_step_size = 1,
});
deoxyribonucleic_cultivator:recipe_register_input(
"hades_laboratory:dust_bones_dinosaur",
{
inputs = 1,
outputs = dust_bones_dinosaur_outputs,
production_time = 360,
consumption_step_size = 1,
});
deoxyribonucleic_cultivator:recipe_register_input(
"hades_laboratory:dust_bones_iceage",
{
inputs = 1,
outputs = dust_bones_iceage_outputs,
production_time = 360,
consumption_step_size = 1,
});
deoxyribonucleic_cultivator:recipe_register_input(
"hades_laboratory:dust_bones_recent",
{
inputs = 1,
outputs = dust_bones_recent_outputs,
production_time = 360,
consumption_step_size = 1,
});
end
deoxyribonucleic_cultivator:register_recipes("laboratory_deoxyribonucleic_cultivator", "laboratory_deoxyribonucleic_cultivator_use")