diff --git a/mining_lasers.lua b/mining_lasers.lua index 0db1741..7847b97 100644 --- a/mining_lasers.lua +++ b/mining_lasers.lua @@ -1,6 +1,7 @@ --license LGPLv2+ local mk1_charge = 40000 +local laser_prec = 7 local mining_lasers_list = { -- {, , , (math.sqrt(1+100*(range+0.4))-1)/50}, @@ -42,11 +43,11 @@ local function laser_shoot(player, range, particle_texture, particle_time, sound local playerpos=player:getpos() local dir=player:get_look_dir() - local startpos = {x=playerpos.x, y=playerpos.y+1.6, z=playerpos.z} + local pos = {x=playerpos.x, y=playerpos.y+1.6, z=playerpos.z} local a = vector.multiply(dir, 50) - local nodes = vector.line(vector.round(startpos), dir, range) + local nodes = vector.fine_line(pos, dir, range, laser_prec) - minetest.add_particle(startpos, dir, a, particle_time, 1, false, particle_texture) + minetest.add_particle(pos, dir, a, particle_time, 1, false, particle_texture) for _,p in ipairs(nodes) do --minetest.after isn't necessary for a laser laser_node(p, player) end diff --git a/weapons.lua b/weapons.lua index 094fbf8..564725f 100644 --- a/weapons.lua +++ b/weapons.lua @@ -1,4 +1,5 @@ local gun_range = 100 +local gun_prec = 7 local gun_a = 200 local gun_v = 100 local shot_delay = vector.straightdelay(gun_range, gun_v, gun_a) @@ -21,18 +22,18 @@ local function shoot(player, range, particle_texture, particle_time, sound) local playerpos=player:getpos() local dir=player:get_look_dir() - local startpos = vector.round({x=playerpos.x, y=playerpos.y+1.6, z=playerpos.z}) + local pos = {x=playerpos.x, y=playerpos.y+1.6, z=playerpos.z} local a = vector.multiply(dir, gun_a) local v = vector.multiply(dir, gun_v) - local nodes = vector.line(startpos, dir, range) + local nodes = vector.fine_line(pos, dir, range, gun_prec) - minetest.add_particle(startpos, v, a, particle_time, 1, false, particle_texture) + minetest.add_particle(pos, v, a, particle_time, 1, false, particle_texture) for i,p in ipairs(nodes) do if minetest.get_node(p).name ~= "air" then if minetest.get_node(p).name ~= "wool:blue" and i > 1 then posb = nodes[i-1] - paint(posb, startpos) + paint(posb, pos) end break end