summaryrefslogtreecommitdiff
path: root/routing_tubes.lua
diff options
context:
space:
mode:
Diffstat (limited to 'routing_tubes.lua')
-rw-r--r--routing_tubes.lua68
1 files changed, 48 insertions, 20 deletions
diff --git a/routing_tubes.lua b/routing_tubes.lua
index 1ebcf06..7a90fd4 100644
--- a/routing_tubes.lua
+++ b/routing_tubes.lua
@@ -10,6 +10,36 @@ minetest.register_craft( {
},
})
+-- The hammers that can be used to break/repair tubes
+local allowed_hammers = {
+ "anvil:hammer",
+ "cottages:hammer",
+ "glooptest:hammer_steel",
+ "glooptest:hammer_bronze",
+ "glooptest:hammer_diamond",
+ "glooptest:hammer_mese",
+ "glooptest:hammer_alatro",
+ "glooptest:hammer_arol"
+}
+
+-- Convert the above list to a format that's easier to look up
+for _,hammer in ipairs(allowed_hammers) do
+ allowed_hammers[hammer] = true
+end
+
+-- Check if the player is holding a suitable hammer or not - if they are, apply wear to it
+function pipeworks.check_and_wear_hammer(player)
+ local itemstack = player:get_wielded_item()
+ local wieldname = itemstack:get_name()
+ local playername = player:get_player_name()
+ if allowed_hammers[wieldname] then
+ itemstack:add_wear(1000)
+ player:set_wielded_item(itemstack)
+ return true
+ end
+ return false
+end
+
local nodecolor = 0xffff3030
pipeworks.register_tube("pipeworks:broken_tube", {
@@ -36,29 +66,27 @@ pipeworks.register_tube("pipeworks:broken_tube", {
local wieldname = itemstack:get_name()
local playername = puncher:get_player_name()
local log_msg = playername.." struck a broken tube at "..minetest.pos_to_string(pos).."\n"
- if wieldname == "anvil:hammer"
- or wieldname == "cottages:hammer"
- or wieldname == "glooptest:hammer_steel"
- or wieldname == "glooptest:hammer_bronze"
- or wieldname == "glooptest:hammer_diamond"
- or wieldname == "glooptest:hammer_mese"
- or wieldname == "glooptest:hammer_alatro"
- or wieldname == "glooptest:hammer_arol" then
- local meta = minetest.get_meta(pos)
- local was_node = minetest.deserialize(meta:get_string("the_tube_was"))
- if was_node and was_node ~= "" then
- pipeworks.logger(log_msg.." with "..wieldname.." to repair it.")
- minetest.swap_node(pos, { name = was_node.name, param2 = was_node.param2 })
- pipeworks.scan_for_tube_objects(pos)
- itemstack:add_wear(1000)
- puncher:set_wielded_item(itemstack)
- return itemstack
+ local meta = minetest.get_meta(pos)
+ local was_node = minetest.deserialize(meta:get_string("the_tube_was"))
+ if not was_node then
+ pipeworks.logger(log_msg.." but it can't be repaired.")
+ return
+ end
+ if not pipeworks.check_and_wear_hammer(puncher) then
+ if wieldname == "" then
+ pipeworks.logger(log_msg.." by hand. It's not very effective.")
+ if minetest.settings:get_bool("enable_damage") then
+ minetest.chat_send_player(playername,S("Broken tubes may be a bit sharp. Perhaps try with a hammer?"))
+ puncher:set_hp(puncher:get_hp()-1)
+ end
else
- pipeworks.logger(log_msg.." but it can't be repaired.")
+ pipeworks.logger(log_msg.." with "..wieldname.." but that tool is too weak.")
end
- else
- pipeworks.logger(log_msg.." with "..wieldname.." but that tool is too weak.")
+ return
end
+ pipeworks.logger(log_msg.." with "..wieldname.." to repair it.")
+ minetest.swap_node(pos, { name = was_node.name, param2 = was_node.param2 })
+ pipeworks.scan_for_tube_objects(pos)
end
}
})