summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZefram <zefram@fysh.org>2014-08-18 17:09:37 +0100
committerZefram <zefram@fysh.org>2014-08-18 17:09:37 +0100
commit7d610b7c80487cd7a6e66f55c9c3b1190e5dfc7f (patch)
treea845cff9d5ea6053fe30f291a2bed5bb3201cd89
parent814646b5425cb745718cc4928c9218a13107575c (diff)
Tube capability for tool workshop
Tool workshop can now accept tools to repair via tube. It has upgrade slots. Battery upgrade reduces its power consumption. Tube upgrade makes it eject fully-repaired (or unrepairable) items via tube.
-rw-r--r--technic/machines/MV/tool_workshop.lua34
1 files changed, 28 insertions, 6 deletions
diff --git a/technic/machines/MV/tool_workshop.lua b/technic/machines/MV/tool_workshop.lua
index 1026718..a1f9a21 100644
--- a/technic/machines/MV/tool_workshop.lua
+++ b/technic/machines/MV/tool_workshop.lua
@@ -14,10 +14,15 @@ minetest.register_craft({
}
})
+local workshop_demand = {5000, 3500, 2000}
+
local workshop_formspec =
"invsize[8,9;]"..
"list[current_name;src;3,1;1,1;]"..
"label[0,0;"..S("%s Tool Workshop"):format("MV").."]"..
+ "list[current_name;upgrade1;1,3;1,1;]"..
+ "list[current_name;upgrade2;2,3;1,1;]"..
+ "label[1,4;"..S("Upgrade Slots").."]"..
"list[current_player;main;0,5;8,4;]"
local run = function(pos, node)
@@ -26,15 +31,16 @@ local run = function(pos, node)
local eu_input = meta:get_int("MV_EU_input")
local machine_name = S("%s Tool Workshop"):format("MV")
local machine_node = "technic:tool_workshop"
- local demand = 5000
-- Setup meta data if it does not exist.
if not eu_input then
- meta:set_int("MV_EU_demand", demand)
+ meta:set_int("MV_EU_demand", workshop_demand[1])
meta:set_int("MV_EU_input", 0)
return
end
+ local EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta)
+
local repairable = false
local srcstack = inv:get_stack("src", 1)
if not srcstack:is_empty() then
@@ -46,27 +52,32 @@ local run = function(pos, node)
repairable = true
end
end
+ technic.handle_machine_pipeworks(pos, tube_upgrade, function (pos, x_velocity, z_velocity)
+ if not repairable then
+ technic.send_items(pos, x_velocity, z_velocity, "src")
+ end
+ end)
if not repairable then
meta:set_string("infotext", S("%s Idle"):format(machine_name))
meta:set_int("MV_EU_demand", 0)
return
end
- if eu_input < demand then
+ if eu_input < workshop_demand[EU_upgrade+1] then
meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
- elseif eu_input >= demand then
+ elseif eu_input >= workshop_demand[EU_upgrade+1] then
meta:set_string("infotext", S("%s Active"):format(machine_name))
srcstack:add_wear(-1000)
inv:set_stack("src", 1, srcstack)
end
- meta:set_int("MV_EU_demand", demand)
+ meta:set_int("MV_EU_demand", workshop_demand[EU_upgrade+1])
end
minetest.register_node("technic:tool_workshop", {
description = S("%s Tool Workshop"):format("MV"),
tiles = {"technic_workshop_top.png", "technic_machine_bottom.png", "technic_workshop_side.png",
"technic_workshop_side.png", "technic_workshop_side.png", "technic_workshop_side.png"},
- groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, tubedevice=1, tubedevice_receiver=1},
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@@ -74,10 +85,21 @@ minetest.register_node("technic:tool_workshop", {
meta:set_string("formspec", workshop_formspec)
local inv = meta:get_inventory()
inv:set_size("src", 1)
+ inv:set_size("upgrade1", 1)
+ inv:set_size("upgrade2", 1)
end,
can_dig = technic.machine_can_dig,
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
+ tube = {
+ can_insert = function (pos, node, stack, direction)
+ return minetest.get_meta(pos):get_inventory():room_for_item("src", stack)
+ end,
+ insert_object = function (pos, node, stack, direction)
+ return minetest.get_meta(pos):get_inventory():add_item("src", stack)
+ end,
+ connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1},
+ },
technic_run = run,
})