-local mining_drill_max_charge = 50000
-local mining_drill_mk2_max_charge = 200000
-local mining_drill_mk3_max_charge = 650000
-local mining_drill_power_usage = 200
-local mining_drill_mk2_power_usage = 500
-local mining_drill_mk3_power_usage = 800
+local max_charge = {50000, 200000, 650000}
+local power_usage_per_node = {200, 500, 800}
local S = technic.getter
drill_dig_it0 (pos,player)
end
+local function cost_to_use(drill_type, mode)
+ local mult
+ if mode == 1 then
+ mult = 1
+ elseif mode <= 4 then
+ mult = 3
+ else
+ mult = 9
+ end
+ return power_usage_per_node[drill_type] * mult
+end
-local function drill_dig_it(pos, player, drill_type, mode)
- local charge
+local function drill_dig_it(pos, player, mode)
if mode == 1 then
drill_dig_it0(pos, player)
end
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_mk3_power_usage end
- if (mode==2 or mode==3 or mode==4) then charge=mining_drill_mk3_power_usage*6 end
- if mode==5 then charge=mining_drill_mk3_power_usage*9 end
- end
minetest.sound_play("mining_drill", {pos = pos, gain = 1.0, max_hear_distance = 10,})
- return charge
end
local function mining_drill_mk2_setmode(user,itemstack)
if pointed_thing.type ~= "node" or not meta.charge then
return
end
- if meta.charge - mining_drill_power_usage > 0 then
+ local charge_to_take = cost_to_use(2, meta.mode)
+ if meta.charge >= charge_to_take then
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
- local charge_to_take = drill_dig_it(pos, user, 2, meta.mode)
+ drill_dig_it(pos, user, meta.mode)
meta.charge = meta.charge - charge_to_take
- meta.charge = math.max(meta.charge, 0)
itemstack:set_metadata(minetest.serialize(meta))
- technic.set_RE_wear(itemstack, meta.charge, mining_drill_mk2_max_charge)
+ technic.set_RE_wear(itemstack, meta.charge, max_charge[2])
end
return itemstack
end
if pointed_thing.type ~= "node" or not meta.charge then
return
end
- if meta.charge - mining_drill_power_usage > 0 then
+ local charge_to_take = cost_to_use(3, meta.mode)
+ if meta.charge >= charge_to_take then
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
- local charge_to_take = drill_dig_it(pos, user, 3, meta.mode)
+ drill_dig_it(pos, user, meta.mode)
meta.charge = meta.charge - charge_to_take
- meta.charge = math.max(meta.charge, 0)
itemstack:set_metadata(minetest.serialize(meta))
- technic.set_RE_wear(itemstack, meta.charge, mining_drill_mk3_max_charge)
+ technic.set_RE_wear(itemstack, meta.charge, max_charge[3])
end
return itemstack
end
-technic.register_power_tool("technic:mining_drill", mining_drill_max_charge)
+technic.register_power_tool("technic:mining_drill", max_charge[1])
minetest.register_tool("technic:mining_drill", {
description = S("Mining Drill Mk%d"):format(1),
if not meta or not meta.charge then
return
end
- if meta.charge - mining_drill_power_usage > 0 then
+ local charge_to_take = cost_to_use(1, 1)
+ if meta.charge >= charge_to_take then
local pos = minetest.get_pointed_thing_position(pointed_thing, above)
- charge_to_take = drill_dig_it(pos, user, 1, 1)
- meta.charge = meta.charge - mining_drill_power_usage
+ drill_dig_it(pos, user, 1)
+ meta.charge = meta.charge - charge_to_take
itemstack:set_metadata(minetest.serialize(meta))
- technic.set_RE_wear(itemstack, meta.charge, mining_drill_max_charge)
+ technic.set_RE_wear(itemstack, meta.charge, max_charge[1])
end
return itemstack
end,
end,
})
-technic.register_power_tool("technic:mining_drill_mk2", mining_drill_mk2_max_charge)
+technic.register_power_tool("technic:mining_drill_mk2", max_charge[2])
for i = 1, 4 do
- technic.register_power_tool("technic:mining_drill_mk2_"..i, mining_drill_mk2_max_charge)
+ technic.register_power_tool("technic:mining_drill_mk2_"..i, max_charge[2])
minetest.register_tool("technic:mining_drill_mk2_"..i, {
description = S("Mining Drill Mk%d Mode %d"):format(2, i),
inventory_image = "technic_mining_drill_mk2.png^technic_tool_mode"..i..".png",
end,
})
-technic.register_power_tool("technic:mining_drill_mk3", mining_drill_mk3_max_charge)
+technic.register_power_tool("technic:mining_drill_mk3", max_charge[3])
for i=1,5,1 do
- technic.register_power_tool("technic:mining_drill_mk3_"..i, mining_drill_mk3_max_charge)
+ technic.register_power_tool("technic:mining_drill_mk3_"..i, max_charge[3])
minetest.register_tool("technic:mining_drill_mk3_"..i, {
description = S("Mining Drill Mk%d Mode %d"):format(3, i),
inventory_image = "technic_mining_drill_mk3.png^technic_tool_mode"..i..".png",