From a2e452b1ddbf4eb84ddbae0dfc873e8467fc4377 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Mon, 27 Jan 2014 19:56:49 +0100 Subject: [PATCH] update --- README.txt | 2 +- init.lua | 3 ++- sounds/extrablocks_shot.ogg | Bin 0 -> 4318 bytes weapons.lua | 52 ++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 sounds/extrablocks_shot.ogg create mode 100644 weapons.lua diff --git a/README.txt b/README.txt index 756228d..ce52d11 100644 --- a/README.txt +++ b/README.txt @@ -1,2 +1,2 @@ TODO: -— add craft stuff for the mining lasers (maybe a diamond [array?]) +— add craft stuff for the mining lasers (maybe a diamond [array?] and mirrors) diff --git a/init.lua b/init.lua index 45417b2..16c04e5 100644 --- a/init.lua +++ b/init.lua @@ -364,6 +364,7 @@ minetest.register_ore({ local path = minetest.get_modpath("extrablocks") dofile(path.."/settings.lua") +dofile(path.."/vector_line.lua") if extrablocks_enable_moss then dofile(path.."/natur.lua") end @@ -376,6 +377,6 @@ end if extrablocks_tools then dofile(path.."/tools.lua") end -dofile(path.."/vector_line.lua") +dofile(path.."/weapons.lua") dofile(path.."/mining_lasers.lua") print(string.format("[extrablocks] loaded after ca. %.2fs", os.clock() - load_time_start)) diff --git a/sounds/extrablocks_shot.ogg b/sounds/extrablocks_shot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fc500460af8b8f06701b5a69863b5da921a73ce3 GIT binary patch literal 4318 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 JCMaLd`y0fVY{38k literal 0 HcmV?d00001 diff --git a/weapons.lua b/weapons.lua new file mode 100644 index 0000000..094fbf8 --- /dev/null +++ b/weapons.lua @@ -0,0 +1,52 @@ +local gun_range = 100 +local gun_a = 200 +local gun_v = 100 +local shot_delay = vector.straightdelay(gun_range, gun_v, gun_a) + +local function paint(pos, pos0) + if minetest.get_node(pos).name == "air" then + if minetest.get_node(pos).name ~= "wool:blue" then + local delay = vector.straightdelay(vector.distance(pos,pos0), gun_v, gun_a) + minetest.after(delay, function(pos) + minetest.add_node(pos, {name="wool:blue"}) + end, pos) + end + return true + end +end + +local function shoot(player, range, particle_texture, particle_time, sound) + local t1 = os.clock() + + 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 a = vector.multiply(dir, gun_a) + local v = vector.multiply(dir, gun_v) + local nodes = vector.line(startpos, dir, range) + + minetest.add_particle(startpos, 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) + end + break + end + end + minetest.sound_play(sound, {pos = playerpos, gain = 1.0, max_hear_distance = range}) + + print("[technic] my shot was calculated after "..tostring(os.clock()-t1).."s") +end + +minetest.register_tool("extrablocks:gun", { + description = "Test Gun", + inventory_image = "technic_mining_laser_mk3.png^[transformFY", + stack_max = 1, + on_use = function(itemstack, user) + shoot(user, gun_range, "wool_blue.png", shot_delay, "extrablocks_shot") + end, +})