From d0efa15b983f7a0a96e1a7abcdad713715dfeeeb Mon Sep 17 00:00:00 2001 From: Zefram <zefram@fysh.org> Date: Mon, 18 Aug 2014 16:14:15 +0200 Subject: [PATCH] In quarry, skip past undiggable nodes --- technic/tools/mining_lasers.lua | 51 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 35 insertions(+), 16 deletions(-) diff --git a/technic/tools/mining_lasers.lua b/technic/tools/mining_lasers.lua index e06a00d..a6c8682 100644 --- a/technic/tools/mining_lasers.lua +++ b/technic/tools/mining_lasers.lua @@ -1,12 +1,11 @@ local r_corr = 0.25 -- Remove a bit more nodes (if shooting diagonal) to let it look like a hole (sth like antialiasing) -local mk1_charge = 40000 local mining_lasers_list = { --- {<num>, <range of the laser shots>, <max_charge>}, - {"1", 7, mk1_charge}, - {"2", 11, mk1_charge * 4}, - {"3", 30, mk1_charge * 16}, +-- {<num>, <range of the laser shots>, <max_charge>, <charge_per_shot>}, + {"1", 7, 50000, 1000}, + {"2", 14, 200000, 2000}, + {"3", 21, 650000, 3000}, } local f_1 = 0.5 - r_corr @@ -17,9 +16,25 @@ minetest.register_craft({ output = 'technic:laser_mk1', recipe = { - {'default:diamond', 'default:steel_ingot', 'technic:battery'}, - {'', 'default:steel_ingot', 'technic:battery'}, - {'', '', 'default:copper_ingot'}, + {'default:diamond', 'technic:brass_ingot', 'default:obsidian_glass'}, + {'', 'technic:brass_ingot', 'technic:red_energy_crystal'}, + {'', '', 'default:copper_ingot'}, + } +}) +minetest.register_craft({ + output = 'technic:laser_mk2', + recipe = { + {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk1'}, + {'', 'technic:carbon_steel_ingot', 'technic:green_energy_crystal'}, + {'', '', 'default:copper_ingot'}, + } +}) +minetest.register_craft({ + output = 'technic:laser_mk3', + recipe = { + {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk2'}, + {'', 'technic:carbon_steel_ingot', 'technic:blue_energy_crystal'}, + {'', '', 'default:copper_ingot'}, } }) @@ -60,15 +75,15 @@ end local function laser_node(pos, player) - if minetest.is_protected(pos, player:get_player_name()) then - minetest.record_protection_violation(pos, player:get_player_name()) - return - end local node = minetest.get_node(pos) if node.name == "air" or node.name == "ignore" or node.name == "default:lava_source" or node.name == "default:lava_flowing" then + return + end + if minetest.is_protected(pos, player:get_player_name()) then + minetest.record_protection_violation(pos, player:get_player_name()) return end if node.name == "default:water_source" @@ -92,9 +107,9 @@ local t_dir = get_used_dir(dir) local dir_typ = t_dir[1] if t_dir[3] == "+" then - f_tab = {0, range} + f_tab = {1, range} else - f_tab = {-range,0} + f_tab = {-range, -1} end local d_ch = t_dir[2] if dir_typ == "x" then @@ -153,14 +168,18 @@ description = S("Mining Laser Mk%d"):format(m[1]), inventory_image = "technic_mining_laser_mk"..m[1]..".png", stack_max = 1, + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, on_use = function(itemstack, user) local meta = minetest.deserialize(itemstack:get_metadata()) if not meta or not meta.charge then return end - if meta.charge - 400 > 0 then + + -- If there's enough charge left, fire the laser + if meta.charge >= m[4] then + meta.charge = meta.charge - m[4] laser_shoot(user, m[2], "technic_laser_beam_mk"..m[1]..".png", "technic_laser_mk"..m[1]) - meta.charge = meta.charge - 400 technic.set_RE_wear(itemstack, meta.charge, m[3]) itemstack:set_metadata(minetest.serialize(meta)) end -- Gitblit v1.8.0