diff --git a/kienzan.lua b/kienzan.lua index 0cb9cdb..43aa357 100644 --- a/kienzan.lua +++ b/kienzan.lua @@ -28,10 +28,10 @@ kienzan_ENTITY={ local timer = 0 minetest.register_globalstep(function(dtime) timer = timer + dtime; - if timer > 10 then - self.object:remove() - end - end) + if timer > 10 then + self.object:remove() + end + end) local pos = self.object:getpos() local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) for k, obj in pairs(objs) do diff --git a/nssm_weapons.lua b/nssm_weapons.lua index 1d3b8cf..d3f55c2 100644 --- a/nssm_weapons.lua +++ b/nssm_weapons.lua @@ -30,18 +30,108 @@ function weapons_shot(itemstack, placer, pointed_thing, velocity, name) return itemstack end -function default_on_step(self, dtime, name, max_time, damage, dir, radius, not_transparent, vel) - local timer = 0 +function search_on_step(self, dtime, name, max_time, damage, dir, radius, not_transparent, vel, timer) + --local timer = 0 local pos = self.object:getpos() + local vel = self.object:getvelocity() minetest.register_globalstep(function(dtime) timer = timer + dtime - if (timer>max_time) then + --minetest.chat_send_all("Time: = "..timer.." Max_time: "..max_time) + if timer>max_time then self.object:remove() end end) --while going around it damages entities - local objects = minetest.env:get_objects_inside_radius(pos, 0) + local objects = minetest.env:get_objects_inside_radius(pos, 30) + local min_dist = 100 + local obj_min = nil + local obj_p = nil + local vec_min = nil + for _,obj in ipairs(objects) do + if (obj:is_player()) then + elseif (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item" and obj:get_luaentity().name ~= self.object:get_luaentity().name) then + obj_p = obj:getpos() + local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z} + local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5 + if (distmax_time then + self.object:remove() + end + end) + + --while going around it damages entities + local objects = minetest.env:get_objects_inside_radius(pos, 2) for _,obj in ipairs(objects) do if (obj:is_player()) then elseif (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item") then @@ -154,7 +244,7 @@ function nssm_register_weapon(name, def) --this recipe doesn't work for a misterious reason minetest.register_craft({ - output = "nssm:caccamerda", + output = 'nssm:'..name.."_hand", recipe = { { {'nssm:great_energy_globe', 'nssm:great_energy_globe', 'nssm:great_energy_globe'}, @@ -171,7 +261,7 @@ end --function default_on_step(self, dtime, name, max_time, damage, dir, not_transparent, vel) nssm_register_weapon("kamehameha", { on_step = function(self, dtime) - default_on_step(self, dtime, "kamehameha", 10, 20, default_dir, 10, "group:cracky", 25) + default_on_step(self, dtime, "kamehameha", 10, 20, default_dir, 1, "group:cracky", 25,0) end, hit_node = function(self, pos, node) nssm:explosion(pos, 8, 1) @@ -181,9 +271,9 @@ nssm_register_weapon("kamehameha", { velocity = 25, }) -nssm_register_weapon("kienzan", { +--[[nssm_register_weapon("kienzan", { on_step = function(self, dtime) - default_on_step(self, dtime, "kienzan", 5, 20, {x=1, y=0, z=1}, 1, nil, 25) + default_on_step(self, dtime, "kienzan", 3, 20, {x=1, y=0, z=1}, 1, nil, 25,0) end, hit_node = function(self, pos, node) end, @@ -191,16 +281,15 @@ nssm_register_weapon("kienzan", { description = "Kienzan from DragonBall", velocity = 25, }) +]] ---[[ -minetest.register_craft({ - output = 'nssm:_hand', - recipe = { - { - {'nssm:great_energy_globe', 'nssm:great_energy_globe', 'nssm:great_energy_globe'}, - {'nssm:great_energy_globe', 'default:stick', 'nssm:great_energy_globe'}, - {'nssm:great_energy_globe', 'nssm:great_energy_globe', 'nssm:great_energy_globe'}, - } - } +nssm_register_weapon("kienzan", { + on_step = function(self, dtime) + search_on_step(self, dtime, "kienzan", 5, 20, {x=1, y=0, z=1}, 1, nil, 25,0) + end, + hit_node = function(self, pos, node) + end, + material = "", + description = "Kienzan from DragonBall", + velocity = 25, }) -]]--