Reworked power tools, new drills
@ -18,19 +18,12 @@ power_tools[registered_power_tools_count].tool_name=string1
|
|||||||
power_tools[registered_power_tools_count].max_charge=max_charge
|
power_tools[registered_power_tools_count].max_charge=max_charge
|
||||||
end
|
end
|
||||||
|
|
||||||
register_power_tool ("technic:mining_drill",60000)
|
|
||||||
register_power_tool ("technic:chainsaw",30000)
|
|
||||||
register_power_tool ("technic:laser_mk1",40000)
|
|
||||||
register_power_tool ("technic:battery",10000)
|
register_power_tool ("technic:battery",10000)
|
||||||
register_power_tool ("technic:sonic_screwdriver",15000)
|
|
||||||
register_power_tool ("technic:flashlight",30000)
|
|
||||||
register_power_tool ("technic:red_energy_crystal",100000)
|
register_power_tool ("technic:red_energy_crystal",100000)
|
||||||
register_power_tool ("technic:green_energy_crystal",250000)
|
register_power_tool ("technic:green_energy_crystal",250000)
|
||||||
register_power_tool ("technic:blue_energy_crystal",500000)
|
register_power_tool ("technic:blue_energy_crystal",500000)
|
||||||
|
|
||||||
minetest.register_alias("battery", "technic:battery")
|
|
||||||
minetest.register_alias("battery_box", "technic:battery_box")
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'technic:battery 1',
|
output = 'technic:battery 1',
|
||||||
recipe = {
|
recipe = {
|
||||||
@ -143,7 +136,6 @@ minetest.register_node("technic:battery_box"..i, {
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
LV_nodes_visited = {}
|
LV_nodes_visited = {}
|
||||||
|
|
||||||
function get_RE_item_load (load1,max_load)
|
function get_RE_item_load (load1,max_load)
|
||||||
@ -168,8 +160,7 @@ end
|
|||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
nodenames = {"technic:battery_box","technic:battery_box1","technic:battery_box2","technic:battery_box3","technic:battery_box4",
|
nodenames = {"technic:battery_box","technic:battery_box1","technic:battery_box2","technic:battery_box3","technic:battery_box4",
|
||||||
"technic:battery_box5","technic:battery_box6","technic:battery_box7","technic:battery_box8"
|
"technic:battery_box5","technic:battery_box6","technic:battery_box7","technic:battery_box8"},
|
||||||
},
|
|
||||||
interval = 1,
|
interval = 1,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||||
@ -188,20 +179,30 @@ minetest.register_abm({
|
|||||||
--loading registered power tools
|
--loading registered power tools
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
if inv:is_empty("src")==false then
|
if inv:is_empty("src")==false then
|
||||||
srcstack = inv:get_stack("src", 1)
|
local srcstack = inv:get_stack("src", 1)
|
||||||
src_item=srcstack:to_table()
|
local src_item=srcstack:to_table()
|
||||||
item_meta=srcstack:get_metadata()
|
local src_meta=get_item_meta(src_item["metadata"])
|
||||||
if src_item["metadata"]=="" then src_item["metadata"]="0" end --create meta for not used before tool/item
|
|
||||||
|
|
||||||
local item_max_charge = nil
|
local item_max_charge=nil
|
||||||
local counter=registered_power_tools_count
|
for i=1,registered_power_tools_count,1 do
|
||||||
for i=1, counter,1 do
|
|
||||||
if power_tools[i].tool_name==src_item["name"] then
|
if power_tools[i].tool_name==src_item["name"] then
|
||||||
|
src_meta=get_item_meta(src_item["metadata"])
|
||||||
|
if src_meta==nil then
|
||||||
|
src_meta={}
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
else
|
||||||
|
if src_meta["technic_power_tool"]==nil then
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
end
|
||||||
|
end
|
||||||
item_max_charge=power_tools[i].max_charge
|
item_max_charge=power_tools[i].max_charge
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if item_max_charge then
|
if item_max_charge then
|
||||||
load1=tonumber((src_item["metadata"]))
|
load1=src_meta["charge"]
|
||||||
load_step=1000
|
load_step=1000
|
||||||
if load1<item_max_charge and charge>0 then
|
if load1<item_max_charge and charge>0 then
|
||||||
if charge-load_step<0 then load_step=charge end
|
if charge-load_step<0 then load_step=charge end
|
||||||
@ -209,7 +210,8 @@ minetest.register_abm({
|
|||||||
load1=load1+load_step
|
load1=load1+load_step
|
||||||
charge=charge-load_step
|
charge=charge-load_step
|
||||||
set_RE_wear(src_item,load1,item_max_charge)
|
set_RE_wear(src_item,load1,item_max_charge)
|
||||||
src_item["metadata"]=tostring(load1)
|
src_meta["charge"]=load1
|
||||||
|
src_item["metadata"]=set_item_meta(src_meta)
|
||||||
inv:set_stack("src", 1, src_item)
|
inv:set_stack("src", 1, src_item)
|
||||||
end
|
end
|
||||||
meta:set_int("battery_charge",charge)
|
meta:set_int("battery_charge",charge)
|
||||||
@ -220,16 +222,27 @@ minetest.register_abm({
|
|||||||
if inv:is_empty("dst") == false then
|
if inv:is_empty("dst") == false then
|
||||||
srcstack = inv:get_stack("dst", 1)
|
srcstack = inv:get_stack("dst", 1)
|
||||||
src_item=srcstack:to_table()
|
src_item=srcstack:to_table()
|
||||||
local item_max_charge = nil
|
local src_meta=get_item_meta(src_item["metadata"])
|
||||||
local counter=registered_power_tools_count-1
|
local item_max_charge=nil
|
||||||
for i=1, counter,1 do
|
for i=1,registered_power_tools_count,1 do
|
||||||
if power_tools[i].tool_name==src_item["name"] then
|
if power_tools[i].tool_name==src_item["name"] then
|
||||||
|
src_meta=get_item_meta(src_item["metadata"])
|
||||||
|
if src_meta==nil then
|
||||||
|
src_meta={}
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
else
|
||||||
|
if src_meta["technic_power_tool"]==nil then
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
end
|
||||||
|
end
|
||||||
item_max_charge=power_tools[i].max_charge
|
item_max_charge=power_tools[i].max_charge
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if item_max_charge then
|
if item_max_charge then
|
||||||
if src_item["metadata"]=="" then src_item["metadata"]="0" end --create meta for not used before battery/crystal
|
local load1=src_meta["charge"]
|
||||||
local load1=tonumber((src_item["metadata"]))
|
|
||||||
load_step=1000
|
load_step=1000
|
||||||
if load1>0 and charge<max_charge then
|
if load1>0 and charge<max_charge then
|
||||||
if charge+load_step>max_charge then load_step=max_charge-charge end
|
if charge+load_step>max_charge then load_step=max_charge-charge end
|
||||||
@ -237,7 +250,8 @@ minetest.register_abm({
|
|||||||
load1=load1-load_step
|
load1=load1-load_step
|
||||||
charge=charge+load_step
|
charge=charge+load_step
|
||||||
set_RE_wear(src_item,load1,item_max_charge)
|
set_RE_wear(src_item,load1,item_max_charge)
|
||||||
src_item["metadata"]=tostring(load1)
|
src_meta["charge"]=load1
|
||||||
|
src_item["metadata"]=set_item_meta(src_meta)
|
||||||
inv:set_stack("dst", 1, src_item)
|
inv:set_stack("dst", 1, src_item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -247,17 +261,9 @@ minetest.register_abm({
|
|||||||
|
|
||||||
local load = math.floor(charge/60000 * 100)
|
local load = math.floor(charge/60000 * 100)
|
||||||
meta:set_string("formspec",
|
meta:set_string("formspec",
|
||||||
"invsize[8,9;]"..
|
battery_box_formspec..
|
||||||
"image[1,1;1,2;technic_power_meter_bg.png^[lowpart:"..
|
"image[1,1;1,2;technic_power_meter_bg.png^[lowpart:"..
|
||||||
(load)..":technic_power_meter_fg.png]"..
|
(load)..":technic_power_meter_fg.png]")
|
||||||
"list[current_name;src;3,1;1,1;]"..
|
|
||||||
"image[4,1;1,1;technic_battery_reload.png]"..
|
|
||||||
"list[current_name;dst;5,1;1,1;]"..
|
|
||||||
"label[0,0;Battery box]"..
|
|
||||||
"label[3,0;Charge]"..
|
|
||||||
"label[5,0;Discharge]"..
|
|
||||||
"label[1,3;Power level]"..
|
|
||||||
"list[current_player;main;0,5;8,4;]")
|
|
||||||
|
|
||||||
local pos1={}
|
local pos1={}
|
||||||
|
|
||||||
@ -344,18 +350,18 @@ end
|
|||||||
})
|
})
|
||||||
|
|
||||||
function add_new_cable_node (LV_nodes,pos1)
|
function add_new_cable_node (LV_nodes,pos1)
|
||||||
local i=1
|
local i=1
|
||||||
repeat
|
repeat
|
||||||
if LV_nodes[i]==nil then break end
|
if LV_nodes[i]==nil then break end
|
||||||
if pos1.x==LV_nodes[i].x and pos1.y==LV_nodes[i].y and pos1.z==LV_nodes[i].z then return false end
|
if pos1.x==LV_nodes[i].x and pos1.y==LV_nodes[i].y and pos1.z==LV_nodes[i].z then return false end
|
||||||
i=i+1
|
i=i+1
|
||||||
until false
|
until false
|
||||||
LV_nodes[i]={}
|
LV_nodes[i]={}
|
||||||
LV_nodes[i].x=pos1.x
|
LV_nodes[i].x=pos1.x
|
||||||
LV_nodes[i].y=pos1.y
|
LV_nodes[i].y=pos1.y
|
||||||
LV_nodes[i].z=pos1.z
|
LV_nodes[i].z=pos1.z
|
||||||
LV_nodes[i].visited=false
|
LV_nodes[i].visited=false
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function check_LV_node (PR_nodes,RE_nodes,LV_nodes,i)
|
function check_LV_node (PR_nodes,RE_nodes,LV_nodes,i)
|
||||||
|
@ -125,20 +125,30 @@ minetest.register_abm({
|
|||||||
--loading registered power tools
|
--loading registered power tools
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
if inv:is_empty("src")==false then
|
if inv:is_empty("src")==false then
|
||||||
srcstack = inv:get_stack("src", 1)
|
local srcstack = inv:get_stack("src", 1)
|
||||||
src_item=srcstack:to_table()
|
local src_item=srcstack:to_table()
|
||||||
item_meta=srcstack:get_metadata()
|
local src_meta=get_item_meta(src_item["metadata"])
|
||||||
if src_item["metadata"]=="" then src_item["metadata"]="0" end --create meta for not used before tool/item
|
|
||||||
|
|
||||||
local item_max_charge = nil
|
local item_max_charge=nil
|
||||||
local counter=registered_power_tools_count
|
for i=1,registered_power_tools_count,1 do
|
||||||
for i=1, counter,1 do
|
|
||||||
if power_tools[i].tool_name==src_item["name"] then
|
if power_tools[i].tool_name==src_item["name"] then
|
||||||
|
src_meta=get_item_meta(src_item["metadata"])
|
||||||
|
if src_meta==nil then
|
||||||
|
src_meta={}
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
else
|
||||||
|
if src_meta["technic_power_tool"]==nil then
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
end
|
||||||
|
end
|
||||||
item_max_charge=power_tools[i].max_charge
|
item_max_charge=power_tools[i].max_charge
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if item_max_charge then
|
if item_max_charge then
|
||||||
load1=tonumber((src_item["metadata"]))
|
load1=src_meta["charge"]
|
||||||
load_step=4000
|
load_step=4000
|
||||||
if load1<item_max_charge and charge>0 then
|
if load1<item_max_charge and charge>0 then
|
||||||
if charge-load_step<0 then load_step=charge end
|
if charge-load_step<0 then load_step=charge end
|
||||||
@ -146,7 +156,8 @@ minetest.register_abm({
|
|||||||
load1=load1+load_step
|
load1=load1+load_step
|
||||||
charge=charge-load_step
|
charge=charge-load_step
|
||||||
set_RE_wear(src_item,load1,item_max_charge)
|
set_RE_wear(src_item,load1,item_max_charge)
|
||||||
src_item["metadata"]=tostring(load1)
|
src_meta["charge"]=load1
|
||||||
|
src_item["metadata"]=set_item_meta(src_meta)
|
||||||
inv:set_stack("src", 1, src_item)
|
inv:set_stack("src", 1, src_item)
|
||||||
end
|
end
|
||||||
meta:set_int("battery_charge",charge)
|
meta:set_int("battery_charge",charge)
|
||||||
@ -157,16 +168,27 @@ minetest.register_abm({
|
|||||||
if inv:is_empty("dst") == false then
|
if inv:is_empty("dst") == false then
|
||||||
srcstack = inv:get_stack("dst", 1)
|
srcstack = inv:get_stack("dst", 1)
|
||||||
src_item=srcstack:to_table()
|
src_item=srcstack:to_table()
|
||||||
local item_max_charge = nil
|
local src_meta=get_item_meta(src_item["metadata"])
|
||||||
local counter=registered_power_tools_count-1
|
local item_max_charge=nil
|
||||||
for i=1, counter,1 do
|
for i=1,registered_power_tools_count,1 do
|
||||||
if power_tools[i].tool_name==src_item["name"] then
|
if power_tools[i].tool_name==src_item["name"] then
|
||||||
|
src_meta=get_item_meta(src_item["metadata"])
|
||||||
|
if src_meta==nil then
|
||||||
|
src_meta={}
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
else
|
||||||
|
if src_meta["technic_power_tool"]==nil then
|
||||||
|
src_meta["technic_power_tool"]=true
|
||||||
|
src_meta["charge"]=0
|
||||||
|
end
|
||||||
|
end
|
||||||
item_max_charge=power_tools[i].max_charge
|
item_max_charge=power_tools[i].max_charge
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if item_max_charge then
|
if item_max_charge then
|
||||||
if src_item["metadata"]=="" then src_item["metadata"]="0" end --create meta for not used before battery/crystal
|
local load1=src_meta["charge"]
|
||||||
local load1=tonumber((src_item["metadata"]))
|
|
||||||
load_step=4000
|
load_step=4000
|
||||||
if load1>0 and charge<max_charge then
|
if load1>0 and charge<max_charge then
|
||||||
if charge+load_step>max_charge then load_step=max_charge-charge end
|
if charge+load_step>max_charge then load_step=max_charge-charge end
|
||||||
@ -174,7 +196,8 @@ minetest.register_abm({
|
|||||||
load1=load1-load_step
|
load1=load1-load_step
|
||||||
charge=charge+load_step
|
charge=charge+load_step
|
||||||
set_RE_wear(src_item,load1,item_max_charge)
|
set_RE_wear(src_item,load1,item_max_charge)
|
||||||
src_item["metadata"]=tostring(load1)
|
src_meta["charge"]=load1
|
||||||
|
src_item["metadata"]=set_item_meta(src_meta)
|
||||||
inv:set_stack("dst", 1, src_item)
|
inv:set_stack("dst", 1, src_item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -182,19 +205,12 @@ minetest.register_abm({
|
|||||||
|
|
||||||
meta:set_int("battery_charge",charge)
|
meta:set_int("battery_charge",charge)
|
||||||
|
|
||||||
local load = math.floor(charge/300000 * 100)
|
local load = math.floor((charge/300000) * 100)
|
||||||
meta:set_string("formspec",
|
meta:set_string("formspec",
|
||||||
"invsize[8,9;]"..
|
mv_battery_box_formspec..
|
||||||
"image[1,1;1,2;technic_power_meter_bg.png^[lowpart:"..
|
"image[1,1;1,2;technic_power_meter_bg.png^[lowpart:"..
|
||||||
(load)..":technic_power_meter_fg.png]"..
|
(load)..":technic_power_meter_fg.png]"
|
||||||
"list[current_name;src;3,1;1,1;]"..
|
)
|
||||||
"image[4,1;1,1;technic_battery_reload.png]"..
|
|
||||||
"list[current_name;dst;5,1;1,1;]"..
|
|
||||||
"label[0,0;MV Battery box]"..
|
|
||||||
"label[3,0;Charge]"..
|
|
||||||
"label[5,0;Discharge]"..
|
|
||||||
"label[1,3;Power level]"..
|
|
||||||
"list[current_player;main;0,5;8,4;]")
|
|
||||||
|
|
||||||
local pos1={}
|
local pos1={}
|
||||||
|
|
||||||
|
@ -77,19 +77,20 @@ minetest.register_tool("technic:lava_can", {
|
|||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
liquids_pointable = true,
|
liquids_pointable = true,
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
if pointed_thing.type ~= "node" then return end
|
||||||
|
n = minetest.env:get_node(pointed_thing.under)
|
||||||
item=itemstack:to_table()
|
item=itemstack:to_table()
|
||||||
local load=nil
|
local load=nil
|
||||||
if item["metadata"]=="" then load=0
|
if item["metadata"]=="" then load=0
|
||||||
else load=tonumber(item["metadata"])
|
else load=tonumber(item["metadata"])
|
||||||
end
|
end
|
||||||
|
|
||||||
if n.name == "default:water_source" then
|
if n.name == "default:lava_source" then
|
||||||
if load+1<17 then
|
if load+1<17 then
|
||||||
minetest.env:add_node(pointed_thing.under, {name="air"})
|
minetest.env:add_node(pointed_thing.under, {name="air"})
|
||||||
load=load+1;
|
load=load+1;
|
||||||
item["metadata"]=tostring(load)
|
item["metadata"]=tostring(load)
|
||||||
set_RE_wear(item,load,water_can_max_load)
|
set_RE_wear(item,load,lava_can_max_load)
|
||||||
itemstack:replace(item)
|
itemstack:replace(item)
|
||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
@ -101,7 +102,7 @@ minetest.register_tool("technic:lava_can", {
|
|||||||
minetest.env:add_node(pointed_thing.under, {name="default:lava_source"})
|
minetest.env:add_node(pointed_thing.under, {name="default:lava_source"})
|
||||||
load=load-1;
|
load=load-1;
|
||||||
item["metadata"]=tostring(load)
|
item["metadata"]=tostring(load)
|
||||||
set_RE_wear(item,load,water_can_max_load)
|
set_RE_wear(item,load,lava_can_max_load)
|
||||||
itemstack:replace(item)
|
itemstack:replace(item)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
@ -111,50 +112,7 @@ minetest.register_tool("technic:lava_can", {
|
|||||||
minetest.env:add_node(pointed_thing.above, {name="default:lava_source"})
|
minetest.env:add_node(pointed_thing.above, {name="default:lava_source"})
|
||||||
load=load-1;
|
load=load-1;
|
||||||
item["metadata"]=tostring(load)
|
item["metadata"]=tostring(load)
|
||||||
set_RE_wear(item,load,water_can_max_load)
|
set_RE_wear(item,load,lava_can_max_load)
|
||||||
itemstack:replace(item)
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
|
|
||||||
if pointed_thing.type ~= "node" then
|
|
||||||
return end
|
|
||||||
|
|
||||||
n = minetest.env:get_node(pointed_thing.under)
|
|
||||||
if n.name == "default:lava_source" then
|
|
||||||
item=itemstack:to_table()
|
|
||||||
local load=tonumber((item["wear"]))
|
|
||||||
if load==0 then load =65535 end
|
|
||||||
load=get_RE_item_load(load,lava_can_max_load)
|
|
||||||
if load+1<9 then
|
|
||||||
minetest.env:add_node(pointed_thing.under, {name="air"})
|
|
||||||
load=load+1;
|
|
||||||
load=set_RE_item_load(load,lava_can_max_load)
|
|
||||||
item["wear"]=tostring(load)
|
|
||||||
itemstack:replace(item)
|
|
||||||
end
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
item=itemstack:to_table()
|
|
||||||
load=tonumber((item["wear"]))
|
|
||||||
if load==0 then load =65535 end
|
|
||||||
load=get_RE_item_load(load,lava_can_max_load)
|
|
||||||
if load==0 then return end
|
|
||||||
|
|
||||||
if n.name == "default:lava_flowing" then
|
|
||||||
minetest.env:add_node(pointed_thing.under, {name="default:lava_source"})
|
|
||||||
load=load-1;
|
|
||||||
load=set_RE_item_load(load,lava_can_max_load)
|
|
||||||
item["wear"]=tostring(load)
|
|
||||||
itemstack:replace(item)
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
|
|
||||||
n = minetest.env:get_node(pointed_thing.above)
|
|
||||||
if n.name == "air" then
|
|
||||||
minetest.env:add_node(pointed_thing.above, {name="default:lava_source"})
|
|
||||||
load=load-1;
|
|
||||||
load=set_RE_item_load(load,lava_can_max_load)
|
|
||||||
item["wear"]=tostring(load)
|
|
||||||
itemstack:replace(item)
|
itemstack:replace(item)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
chainsaw_max_charge=30000
|
chainsaw_max_charge=30000
|
||||||
|
register_power_tool ("technic:chainsaw",chainsaw_max_charge)
|
||||||
|
|
||||||
minetest.register_tool("technic:chainsaw", {
|
minetest.register_tool("technic:chainsaw", {
|
||||||
description = "Chainsaw",
|
description = "Chainsaw",
|
||||||
@ -7,14 +8,17 @@ minetest.register_tool("technic:chainsaw", {
|
|||||||
on_use = function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
if pointed_thing.type=="node" then
|
if pointed_thing.type=="node" then
|
||||||
item=itemstack:to_table()
|
item=itemstack:to_table()
|
||||||
if item["metadata"]=="" or item["metadata"]=="0" then return end --tool not charged
|
local meta=get_item_meta(item["metadata"])
|
||||||
charge=tonumber(item["metadata"])
|
if meta==nil then return false end --tool not charghed
|
||||||
|
if meta["charge"]==nil then return false end
|
||||||
|
charge=meta["charge"]
|
||||||
charge_to_take=600;
|
charge_to_take=600;
|
||||||
if charge-charge_to_take>0 then
|
if charge-charge_to_take>0 then
|
||||||
charge_to_take=chainsaw_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user,charge_to_take)
|
charge_to_take=chainsaw_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user,charge_to_take)
|
||||||
charge=charge-charge_to_take;
|
charge=charge-charge_to_take;
|
||||||
set_RE_wear(item,charge,chainsaw_max_charge)
|
set_RE_wear(item,charge,chainsaw_max_charge)
|
||||||
item["metadata"]=tostring(charge)
|
meta["charge"]=charge
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
itemstack:replace(item)
|
itemstack:replace(item)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
-- original code comes from walkin_light mod by Echo http://minetest.net/forum/viewtopic.php?id=2621
|
-- original code comes from walkin_light mod by Echo http://minetest.net/forum/viewtopic.php?id=2621
|
||||||
|
|
||||||
flashlight_max_charge=30000
|
flashlight_max_charge=30000
|
||||||
|
register_power_tool ("technic:flashlight",flashlight_max_charge)
|
||||||
|
|
||||||
minetest.register_tool("technic:flashlight", {
|
minetest.register_tool("technic:flashlight", {
|
||||||
description = "Flashlight",
|
description = "Flashlight",
|
||||||
inventory_image = "technic_flashlight.png",
|
inventory_image = "technic_flashlight.png",
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
@ -10,14 +11,15 @@ flashlight_max_charge=30000
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "technic:flashlight",
|
output = "technic:flashlight",
|
||||||
recipe = {
|
recipe = {
|
||||||
{"technic:rubber","glass","technic:rubber"},
|
{"technic:rubber","glass","technic:rubber"},
|
||||||
{"technic:stainless_steel_ingot","technic:battery","technic:stainless_steel_ingot"},
|
{"technic:stainless_steel_ingot","technic:battery","technic:stainless_steel_ingot"},
|
||||||
{"","technic:battery",""}
|
{"","technic:battery",""}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
local players = {}
|
local players = {}
|
||||||
local player_positions = {}
|
local player_positions = {}
|
||||||
local last_wielded = {}
|
local last_wielded = {}
|
||||||
@ -152,13 +154,16 @@ local hotbar=inv:get_list("main")
|
|||||||
for i=1,8,1 do
|
for i=1,8,1 do
|
||||||
|
|
||||||
if hotbar[i]:get_name() == "technic:flashlight" then
|
if hotbar[i]:get_name() == "technic:flashlight" then
|
||||||
item=hotbar[i]:to_table()
|
local item=hotbar[i]:to_table()
|
||||||
if item["metadata"]=="" or item["metadata"]=="0" then return false end --flashlight not charghed
|
local meta=get_item_meta(item["metadata"])
|
||||||
charge=tonumber(item["metadata"])
|
if meta==nil then return false end --flashlight not charghed
|
||||||
|
if meta["charge"]==nil then return false end
|
||||||
|
charge=meta["charge"]
|
||||||
if charge-2>0 then
|
if charge-2>0 then
|
||||||
charge =charge-2;
|
charge =charge-2;
|
||||||
set_RE_wear(item,charge,flashlight_max_charge)
|
set_RE_wear(item,charge,flashlight_max_charge)
|
||||||
item["metadata"]=tostring(charge)
|
meta["charge"]=charge
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
hotbar[i]:replace(item)
|
hotbar[i]:replace(item)
|
||||||
inv:set_stack("main",i,hotbar[i])
|
inv:set_stack("main",i,hotbar[i])
|
||||||
return true
|
return true
|
||||||
|
10
technic/helpers.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
function get_item_meta (string)
|
||||||
|
if string.find(string, "return {") then
|
||||||
|
return minetest.deserialize(string)
|
||||||
|
else return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function set_item_meta (table)
|
||||||
|
return minetest.serialize(table)
|
||||||
|
end
|
@ -1,9 +1,11 @@
|
|||||||
-- Minetest 0.4.4 : technic
|
-- Minetest 0.4.4d1 : technic
|
||||||
|
|
||||||
modpath=minetest.get_modpath("technic")
|
modpath=minetest.get_modpath("technic")
|
||||||
|
|
||||||
--Read technic config file
|
--Read technic config file
|
||||||
dofile(modpath.."/config.lua")
|
dofile(modpath.."/config.lua")
|
||||||
|
--helper functions
|
||||||
|
dofile(modpath.."/helpers.lua")
|
||||||
|
|
||||||
-- world gen
|
-- world gen
|
||||||
dofile(modpath.."/ores.lua")
|
dofile(modpath.."/ores.lua")
|
||||||
|
@ -1,25 +1,9 @@
|
|||||||
mining_drill_max_charge=60000
|
mining_drill_max_charge=60000
|
||||||
|
mining_drill_mk2_max_charge=240000
|
||||||
minetest.register_tool("technic:mining_drill", {
|
mining_drill_mk3_max_charge=960000
|
||||||
description = "Mining Drill",
|
mining_drill_power_usage=200
|
||||||
inventory_image = "technic_mining_drill.png",
|
mining_drill_mk2_power_usage=600
|
||||||
stack_max = 1,
|
mining_drill_mk3_power_usage=1800
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
|
||||||
if pointed_thing.type=="node" then
|
|
||||||
item=itemstack:to_table()
|
|
||||||
if item["metadata"]=="" or item["metadata"]=="0" then return end --tool not charged
|
|
||||||
charge=tonumber(item["metadata"])
|
|
||||||
if charge-200>0 then
|
|
||||||
drill_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user)
|
|
||||||
charge =charge-200;
|
|
||||||
item["metadata"]=tostring(charge)
|
|
||||||
set_RE_wear(item,charge,mining_drill_max_charge)
|
|
||||||
itemstack:replace(item)
|
|
||||||
end
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'technic:mining_drill',
|
output = 'technic:mining_drill',
|
||||||
@ -29,21 +13,373 @@ minetest.register_craft({
|
|||||||
{'', 'technic:red_energy_crystal', 'moreores:copper_ingot'},
|
{'', 'technic:red_energy_crystal', 'moreores:copper_ingot'},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'technic:mining_drill_mk2',
|
||||||
|
recipe = {
|
||||||
|
{'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'},
|
||||||
|
{'technic:stainless_steel_ingot', 'technic:mining_drill', 'technic:stainless_steel_ingot'},
|
||||||
|
{'', 'technic:green_energy_crystal', ''},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'technic:mining_drill_mk3',
|
||||||
|
recipe = {
|
||||||
|
{'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'},
|
||||||
|
{'technic:stainless_steel_ingot', 'technic:mining_drill_mk2', 'technic:stainless_steel_ingot'},
|
||||||
|
{'', 'technic:blue_energy_crystal', ''},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
function drill_dig_it (pos, player,drill_type,mode)
|
||||||
|
|
||||||
|
local charge
|
||||||
|
|
||||||
|
if mode==1 then
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
|
||||||
|
if mode==2 then -- 3 deep
|
||||||
|
dir=drill_dig_it1(player)
|
||||||
|
if dir==0 then -- x+
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
if dir==1 then -- x-
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
if dir==2 then -- z+
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
if dir==3 then -- z-
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if mode==3 then -- 3 wide
|
||||||
|
dir=drill_dig_it1(player)
|
||||||
|
if dir==0 or dir==1 then -- x
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
if dir==2 or dir==3 then -- z
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function drill_dig_it (pos, player)
|
if mode==4 then -- 3 tall, selected in the middle
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.y=pos.y+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.y=pos.y-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
|
||||||
|
if mode==5 then -- 3 x 3
|
||||||
|
local dir=player:get_look_dir()
|
||||||
|
if math.abs(dir.y)<0.5 then
|
||||||
|
dir=drill_dig_it1(player)
|
||||||
|
if dir==0 or dir==1 then -- x
|
||||||
|
drill_dig_it2(pos,player)
|
||||||
|
end
|
||||||
|
if dir==2 or dir==3 then -- z
|
||||||
|
drill_dig_it3(pos,player)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
drill_dig_it4(pos,player)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if drill_type==1 then charge=mining_drill_power_usage end
|
||||||
|
if drill_type==2 then
|
||||||
|
if mode==1 then charge=mining_drill_mk2_power_usage end
|
||||||
|
if (mode==2 or mode==3 or mode==4) then charge=mining_drill_mk2_power_usage*3 end
|
||||||
|
end
|
||||||
|
if drill_type==3 then
|
||||||
|
if mode==1 then charge=mining_drill_power_usage end
|
||||||
|
if (mode==2 or mode==3 or mode==4) then charge=mining_drill_mk2_power_usage*6 end
|
||||||
|
if mode==5 then charge=mining_drill_mk2_power_usage*9 end
|
||||||
|
end
|
||||||
|
minetest.sound_play("mining_drill", {pos = pos, gain = 1.0, max_hear_distance = 10,})
|
||||||
|
return charge
|
||||||
|
end
|
||||||
|
|
||||||
|
function drill_dig_it0 (pos,player)
|
||||||
local node=minetest.env:get_node(pos)
|
local node=minetest.env:get_node(pos)
|
||||||
if node.name == "air" or node.name == "ignore" then return end
|
if node.name == "air" or node.name == "ignore" then return end
|
||||||
if node.name == "default:lava_source" then return end
|
if node.name == "default:lava_source" then return end
|
||||||
if node.name == "default:lava_flowing" then return end
|
if node.name == "default:lava_flowing" then return end
|
||||||
if node.name == "default:water_source" then minetest.env:remove_node(pos) return end
|
if node.name == "default:water_source" then minetest.env:remove_node(pos) return end
|
||||||
if node.name == "default:water_flowing" then minetest.env:remove_node(pos) return end
|
if node.name == "default:water_flowing" then minetest.env:remove_node(pos) return end
|
||||||
|
|
||||||
minetest.sound_play("mining_drill", {pos = pos, gain = 1.0, max_hear_distance = 10,})
|
|
||||||
minetest.node_dig(pos,node,player)
|
minetest.node_dig(pos,node,player)
|
||||||
|
end
|
||||||
|
|
||||||
|
function drill_dig_it1 (player)
|
||||||
|
local dir=player:get_look_dir()
|
||||||
|
if math.abs(dir.x)>math.abs(dir.z) then
|
||||||
|
if dir.x>0 then return 0 end
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
if dir.z>0 then return 2 end
|
||||||
|
return 3
|
||||||
|
end
|
||||||
|
|
||||||
|
function drill_dig_it2 (pos,player)
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
pos.y=pos.y+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
pos.y=pos.y-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.z=pos.z-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
function drill_dig_it3 (pos,player)
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
pos.y=pos.y+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
pos.y=pos.y-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
|
||||||
|
function drill_dig_it4 (pos,player)
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
pos.z=pos.z+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
pos.z=pos.z-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x+1
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
pos.x=pos.x-2
|
||||||
|
drill_dig_it0 (pos,player)
|
||||||
|
end
|
||||||
|
|
||||||
|
register_power_tool ("technic:mining_drill",mining_drill_max_charge)
|
||||||
|
minetest.register_tool("technic:mining_drill", {
|
||||||
|
description = "Mining Drill Mk1",
|
||||||
|
inventory_image = "technic_mining_drill.png",
|
||||||
|
stack_max = 1,
|
||||||
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
if pointed_thing.type=="node" then
|
||||||
|
item=itemstack:to_table()
|
||||||
|
local meta=get_item_meta(item["metadata"])
|
||||||
|
if meta==nil then return false end --tool not charghed
|
||||||
|
if meta["charge"]==nil then return false end
|
||||||
|
charge=meta["charge"]
|
||||||
|
if charge-mining_drill_power_usage>0 then
|
||||||
|
charge_to_take=drill_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user,1,1)
|
||||||
|
charge =charge-mining_drill_power_usage;
|
||||||
|
meta["charge"]=charge
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
|
set_RE_wear(item,charge,mining_drill_max_charge)
|
||||||
|
itemstack:replace(item)
|
||||||
|
end
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_tool("technic:mining_drill_mk2", {
|
||||||
|
description = "Mining Drill Mk2",
|
||||||
|
inventory_image = "technic_mining_drill_mk2.png",
|
||||||
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
mining_drill_mk2_handler(itemstack,user,pointed_thing)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
register_power_tool ("technic:mining_drill_mk2",mining_drill_mk2_max_charge)
|
||||||
|
|
||||||
|
for i=1,4,1 do
|
||||||
|
register_power_tool ("technic:mining_drill_mk2_"..i,mining_drill_mk2_max_charge)
|
||||||
|
minetest.register_tool("technic:mining_drill_mk2_"..i, {
|
||||||
|
description = "Mining Drill Mk2 in Mode "..i,
|
||||||
|
inventory_image = "technic_mining_drill_mk2.png^technic_tool_mode"..i..".png",
|
||||||
|
wield_image = "technic_mining_drill_mk2.png",
|
||||||
|
groups = {not_in_creative_inventory=1},
|
||||||
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
mining_drill_mk2_handler(itemstack,user,pointed_thing)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_tool("technic:mining_drill_mk3", {
|
||||||
|
description = "Mining Drill Mk3",
|
||||||
|
inventory_image = "technic_mining_drill_mk3.png",
|
||||||
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
mining_drill_mk3_handler(itemstack,user,pointed_thing)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
register_power_tool ("technic:mining_drill_mk3",mining_drill_mk3_max_charge)
|
||||||
|
|
||||||
|
for i=1,5,1 do
|
||||||
|
register_power_tool ("technic:mining_drill_mk3_"..i,mining_drill_mk3_max_charge)
|
||||||
|
minetest.register_tool("technic:mining_drill_mk3_"..i, {
|
||||||
|
description = "Mining Drill Mk3 in Mode "..i,
|
||||||
|
inventory_image = "technic_mining_drill_mk3.png^technic_tool_mode"..i..".png",
|
||||||
|
wield_image = "technic_mining_drill_mk3.png",
|
||||||
|
groups = {not_in_creative_inventory=1},
|
||||||
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
mining_drill_mk3_handler(itemstack,user,pointed_thing)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function mining_drill_mk2_handler (itemstack,user,pointed_thing)
|
||||||
|
local keys=user:get_player_control()
|
||||||
|
local player_name=user:get_player_name()
|
||||||
|
local item=itemstack:to_table()
|
||||||
|
meta=get_item_meta(item["metadata"])
|
||||||
|
if meta==nil or keys["sneak"]==true then return mining_drill_mk2_setmode(user,itemstack) end
|
||||||
|
if meta["mode"]==nil then return mining_drill_mk2_setmode(user,itemstack) end
|
||||||
|
if pointed_thing.type~="node" then return end
|
||||||
|
if meta["charge"]==nil then return false end
|
||||||
|
charge=meta["charge"]
|
||||||
|
if charge-mining_drill_power_usage>0 then
|
||||||
|
local charge_to_take=drill_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user,2,meta["mode"])
|
||||||
|
charge=charge-charge_to_take;
|
||||||
|
if charge<0 then charge=0 end
|
||||||
|
meta["charge"]=charge
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
|
set_RE_wear(item,charge,mining_drill_mk2_max_charge)
|
||||||
|
itemstack:replace(item)
|
||||||
|
end
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
|
function mining_drill_mk3_handler (itemstack,user,pointed_thing)
|
||||||
|
local keys=user:get_player_control()
|
||||||
|
local player_name=user:get_player_name()
|
||||||
|
local item=itemstack:to_table()
|
||||||
|
meta=get_item_meta(item["metadata"])
|
||||||
|
if meta==nil or keys["sneak"]==true then return mining_drill_mk3_setmode(user,itemstack) end
|
||||||
|
if meta["mode"]==nil then return mining_drill_mk3_setmode(user,itemstack) end
|
||||||
|
if pointed_thing.type~="node" then return end
|
||||||
|
if meta["charge"]==nil then return false end
|
||||||
|
charge=meta["charge"]
|
||||||
|
if charge-mining_drill_power_usage>0 then
|
||||||
|
print(dump(meta))
|
||||||
|
local charge_to_take=drill_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user,3,meta["mode"])
|
||||||
|
charge=charge-charge_to_take;
|
||||||
|
if charge<0 then charge=0 end
|
||||||
|
meta["charge"]=charge
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
|
set_RE_wear(item,charge,mining_drill_mk3_max_charge)
|
||||||
|
itemstack:replace(item)
|
||||||
|
end
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
|
mining_drill_mode_text={
|
||||||
|
{"Single node."},
|
||||||
|
{"3 nodes deep."},
|
||||||
|
{"3 modes wide."},
|
||||||
|
{"3 modes tall."},
|
||||||
|
{"3x3 nodes."},
|
||||||
|
}
|
||||||
|
|
||||||
|
function mining_drill_mk2_setmode(user,itemstack)
|
||||||
|
local player_name=user:get_player_name()
|
||||||
|
local item=itemstack:to_table()
|
||||||
|
local meta=get_item_meta(item["metadata"])
|
||||||
|
if meta==nil then
|
||||||
|
meta={}
|
||||||
|
mode=0
|
||||||
|
end
|
||||||
|
if meta["mode"]==nil then
|
||||||
|
minetest.chat_send_player(player_name,"Hold shift and use to change Mining Drill Mk2 modes.")
|
||||||
|
meta["mode"]=0
|
||||||
|
mode=0
|
||||||
|
end
|
||||||
|
mode=(meta["mode"])
|
||||||
|
mode=mode+1
|
||||||
|
if mode>=5 then mode=1 end
|
||||||
|
minetest.chat_send_player(player_name, "Mining Drill Mk2 mode : "..mode.." - "..mining_drill_mode_text[mode][1] )
|
||||||
|
item["name"]="technic:mining_drill_mk2_"..mode
|
||||||
|
meta["mode"]=mode
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
|
itemstack:replace(item)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
|
function mining_drill_mk3_setmode(user,itemstack)
|
||||||
|
local player_name=user:get_player_name()
|
||||||
|
local item=itemstack:to_table()
|
||||||
|
local meta=get_item_meta(item["metadata"])
|
||||||
|
if meta==nil then
|
||||||
|
meta={}
|
||||||
|
mode=0
|
||||||
|
end
|
||||||
|
if meta["mode"]==nil then
|
||||||
|
minetest.chat_send_player(player_name,"Hold shift and use to change Mining Drill Mk3 modes.")
|
||||||
|
meta["mode"]=0
|
||||||
|
mode=0
|
||||||
|
end
|
||||||
|
mode=(meta["mode"])
|
||||||
|
mode=mode+1
|
||||||
|
if mode>=6 then mode=1 end
|
||||||
|
minetest.chat_send_player(player_name, "Mining Drill Mk3 mode : "..mode.." - "..mining_drill_mode_text[mode][1] )
|
||||||
|
item["name"]="technic:mining_drill_mk3_"..mode
|
||||||
|
meta["mode"]=mode
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
|
itemstack:replace(item)
|
||||||
|
return itemstack
|
||||||
end
|
end
|
@ -1,4 +1,6 @@
|
|||||||
laser_mk1_max_charge=40000
|
laser_mk1_max_charge=40000
|
||||||
|
register_power_tool ("technic:laser_mk1",laser_mk1_max_charge)
|
||||||
|
|
||||||
local laser_shoot = function(itemstack, player, pointed_thing)
|
local laser_shoot = function(itemstack, player, pointed_thing)
|
||||||
local laser_straight_mode=0
|
local laser_straight_mode=0
|
||||||
local playerpos=player:getpos()
|
local playerpos=player:getpos()
|
||||||
@ -54,13 +56,16 @@ minetest.register_tool("technic:laser_mk1", {
|
|||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
item=itemstack:to_table()
|
item=itemstack:to_table()
|
||||||
if item["metadata"]=="" or item["metadata"]=="0" then return end
|
local meta=get_item_meta(item["metadata"])
|
||||||
local charge=tonumber((item["metadata"]))
|
if meta==nil then return false end --tool not charghed
|
||||||
|
if meta["charge"]==nil then return false end
|
||||||
|
charge=meta["charge"]
|
||||||
if charge-400>0 then
|
if charge-400>0 then
|
||||||
laser_shoot(item, user, pointed_thing)
|
laser_shoot(item, user, pointed_thing)
|
||||||
charge =charge-400;
|
charge =charge-400;
|
||||||
item["metadata"]=tostring(charge)
|
set_RE_wear(item,charge,laser_mk1_max_charge)
|
||||||
charge=set_RE_wear(item,charge,laser_mk1_max_charge)
|
meta["charge"]=charge
|
||||||
|
item["metadata"]=set_item_meta(meta)
|
||||||
itemstack:replace(item)
|
itemstack:replace(item)
|
||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
sonic_screwdriver_max_charge=15000
|
sonic_screwdriver_max_charge=15000
|
||||||
|
register_power_tool ("technic:sonic_screwdriver",sonic_screwdriver_max_charge)
|
||||||
|
|
||||||
minetest.register_tool("technic:sonic_screwdriver", {
|
minetest.register_tool("technic:sonic_screwdriver", {
|
||||||
description = "Sonic Screwdriver",
|
description = "Sonic Screwdriver",
|
||||||
inventory_image = "technic_sonic_screwdriver.png",
|
inventory_image = "technic_sonic_screwdriver.png",
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
@ -12,8 +13,10 @@ sonic_screwdriver_max_charge=15000
|
|||||||
if minetest.registered_nodes[node_name].paramtype2 == "facedir" or minetest.registered_nodes[node_name].paramtype2 == "wallmounted" then
|
if minetest.registered_nodes[node_name].paramtype2 == "facedir" or minetest.registered_nodes[node_name].paramtype2 == "wallmounted" then
|
||||||
if node.param2==nil then return end
|
if node.param2==nil then return end
|
||||||
item=itemstack:to_table()
|
item=itemstack:to_table()
|
||||||
if item["metadata"]=="" or item["metadata"]=="0" then return end
|
local meta1=get_item_meta(item["metadata"])
|
||||||
local charge=tonumber((item["metadata"]))
|
if meta1==nil then return false end --tool not charghed
|
||||||
|
if meta1["charge"]==nil then return false end
|
||||||
|
charge=meta1["charge"]
|
||||||
if charge-100>0 then
|
if charge-100>0 then
|
||||||
minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.3, max_hear_distance = 10,})
|
minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.3, max_hear_distance = 10,})
|
||||||
local n = node.param2
|
local n = node.param2
|
||||||
@ -32,8 +35,9 @@ sonic_screwdriver_max_charge=15000
|
|||||||
meta = minetest.env:get_meta(pos)
|
meta = minetest.env:get_meta(pos)
|
||||||
meta:from_table(meta0)
|
meta:from_table(meta0)
|
||||||
|
|
||||||
charge =charge-100;
|
charge=charge-100;
|
||||||
item["metadata"]=tostring(charge)
|
meta1["charge"]=charge
|
||||||
|
item["metadata"]=set_item_meta(meta1)
|
||||||
set_RE_wear(item,charge,sonic_screwdriver_max_charge)
|
set_RE_wear(item,charge,sonic_screwdriver_max_charge)
|
||||||
itemstack:replace(item)
|
itemstack:replace(item)
|
||||||
end
|
end
|
||||||
@ -45,11 +49,11 @@ sonic_screwdriver_max_charge=15000
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "technic:sonic_screwdriver",
|
output = "technic:sonic_screwdriver",
|
||||||
recipe = {
|
recipe = {
|
||||||
{"technic:diamond"},
|
{"technic:diamond"},
|
||||||
{"technic:battery"},
|
{"technic:battery"},
|
||||||
{"technic:stainless_steel_ingot"}
|
{"technic:stainless_steel_ingot"}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
BIN
technic/textures/technic_mining_drill_mk2.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
technic/textures/technic_mining_drill_mk3.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
technic/textures/technic_tool_mode1.png
Normal file
After Width: | Height: | Size: 361 B |
BIN
technic/textures/technic_tool_mode2.png
Normal file
After Width: | Height: | Size: 571 B |
BIN
technic/textures/technic_tool_mode3.png
Normal file
After Width: | Height: | Size: 622 B |
BIN
technic/textures/technic_tool_mode4.png
Normal file
After Width: | Height: | Size: 455 B |
BIN
technic/textures/technic_tool_mode5.png
Normal file
After Width: | Height: | Size: 535 B |
BIN
technic/textures/technic_tool_mode6.png
Normal file
After Width: | Height: | Size: 633 B |
BIN
technic/textures/technic_tool_mode7.png
Normal file
After Width: | Height: | Size: 481 B |
BIN
technic/textures/technic_tool_mode8.png
Normal file
After Width: | Height: | Size: 692 B |
BIN
technic/textures/technic_tool_mode9.png
Normal file
After Width: | Height: | Size: 623 B |