Maciej Kasatkin
2012-09-13 80b5f39b63a68ca61113c4266fa56e3368763a33
commit | author | age
1590dd 1 sonic_screwdriver_max_charge=15000
80b5f3 2       
MK 3        minetest.register_tool("technic:sonic_screwdriver", {
1590dd 4             description = "Sonic Screwdriver",
MK 5             inventory_image = "technic_sonic_screwdriver.png",
6             on_use = function(itemstack, user, pointed_thing)
7                     -- Must be pointing to facedir applicable node
8                     if pointed_thing.type~="node" then return end
80b5f3 9                     local pos=minetest.get_pointed_thing_position(pointed_thing,above)
MK 10                     local node=minetest.env:get_node(pos)
11                     local node_name=node.name
12                         if minetest.registered_nodes[node_name].paramtype2 == "facedir" or minetest.registered_nodes[node_name].paramtype2 == "wallmounted" then
13                     if node.param2==nil  then return end
1590dd 14                     item=itemstack:to_table()
80b5f3 15                         local charge=tonumber((item["wear"]))
MK 16                         if charge ==0 then charge =65535 end
17                         charge=get_RE_item_load(charge,sonic_screwdriver_max_charge)
18                         if charge-100>0 then
19                                 minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.5, max_hear_distance = 10,})
20                            local n = node.param2
21                            if minetest.registered_nodes[node_name].paramtype2 == "facedir" then
22                            n = n+1
23                    if n == 4 then n = 0 end
24                            else
25                            n = n+1
26                            if n == 6 then n = 0 end
27                            end
28                             -- hacky_swap_node, unforunatly.
29                             local meta = minetest.env:get_meta(pos)
30                             local meta0 = meta:to_table()
31                             node.param2 = n
32                             minetest.env:set_node(pos,node)
33                             meta = minetest.env:get_meta(pos)
34                             meta:from_table(meta0)
35                  
36                           charge =charge-100;  
37                           charge=set_RE_item_load(charge,sonic_screwdriver_max_charge)
38                           item["wear"]=tostring(charge)
39                           itemstack:replace(item)
40                           end
41                         return itemstack
42                         else
43                         return itemstack
44                         end
45                         end,
46          
1590dd 47     })
MK 48      
49     minetest.register_craft({
50             output = "technic:sonic_screwdriver",
51             recipe = {
14506c 52             {"technic:diamond"},
MK 53                     {"technic:battery"},
a42299 54                     {"technic:stainless_steel_ingot"}
1590dd 55             }
MK 56     })