From 636b0f20df4fef3eef821c23ccc2f606828f5c6f Mon Sep 17 00:00:00 2001 From: Zefram <zefram@fysh.org> Date: Mon, 07 Jul 2014 15:15:05 +0200 Subject: [PATCH] Handheld prospecting tool --- technic/machines/MV/tool_workshop.lua | 50 ++++++++++++++++++++++++++------------------------ 1 files changed, 26 insertions(+), 24 deletions(-) diff --git a/technic/machines/MV/tool_workshop.lua b/technic/machines/MV/tool_workshop.lua index 7d8bdf3..15aa09d 100644 --- a/technic/machines/MV/tool_workshop.lua +++ b/technic/machines/MV/tool_workshop.lua @@ -1,7 +1,10 @@ --- LV Tool workshop +-- Tool workshop -- This machine repairs tools. minetest.register_alias("tool_workshop", "technic:tool_workshop") + +local S = technic.getter + minetest.register_craft({ output = 'technic:tool_workshop', recipe = { @@ -14,33 +17,25 @@ local workshop_formspec = "invsize[8,9;]".. "list[current_name;src;3,1;1,1;]".. - "label[0,0;Tool Workshop]".. + "label[0,0;"..S("%s Tool Workshop"):format("MV").."]".. "list[current_player;main;0,5;8,4;]" minetest.register_node("technic:tool_workshop", { - description = "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}, sounds = default.node_sound_wood_defaults(), on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Tool Workshop") - meta:set_float("technic_power_machine", 1) + meta:set_string("infotext", S("%s Tool Workshop"):format("MV")) meta:set_string("formspec", workshop_formspec) local inv = meta:get_inventory() inv:set_size("src", 1) end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - if not inv:is_empty("src") then - minetest.chat_send_player(player:get_player_name(), - "Machine cannot be removed because it is not empty"); - return false - end - return true - end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, }) minetest.register_abm({ @@ -51,7 +46,7 @@ local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local eu_input = meta:get_int("MV_EU_input") - local machine_name = "Tool Workshop" + local machine_name = S("%s Tool Workshop"):format("MV") local machine_node = "technic:tool_workshop" local demand = 5000 @@ -65,20 +60,27 @@ -- Power off automatically if no longer connected to a switching station technic.switching_station_timeout_count(pos, "MV") - srcstack = inv:get_stack("src", 1) - if inv:is_empty("src") or - srcstack:get_wear() == 0 or - srcstack:get_name() == "technic:water_can" or - srcstack:get_name() == "technic:lava_can" then - meta:set_string("infotext", machine_name.." Idle") + local repairable = false + local srcstack = inv:get_stack("src", 1) + if not srcstack:is_empty() then + local itemdef = minetest.registered_items[srcstack:get_name()] + if itemdef and + (not itemdef.wear_represents or + itemdef.wear_represents == "mechanical_wear") and + srcstack:get_wear() ~= 0 then + repairable = true + 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 - meta:set_string("infotext", machine_name.." Unpowered") + meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) elseif eu_input >= demand then - meta:set_string("infotext", machine_name.." Active") + meta:set_string("infotext", S("%s Active"):format(machine_name)) srcstack:add_wear(-1000) inv:set_stack("src", 1, srcstack) end -- Gitblit v1.8.0