73 lines
2.1 KiB
Lua
73 lines
2.1 KiB
Lua
disk_VELOCITY=20
|
|
disk_shoot_disk=function (item, player, pointed_thing)
|
|
if player:get_inventory():contains_item("main", "nssm:kienzan_hand") then
|
|
local playerpos=player:getpos()
|
|
local obj=minetest.env:add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, "nssm:kienzan_entity")
|
|
local dir=player:get_look_dir()
|
|
obj:setvelocity({x=dir.x*disk_VELOCITY, y=dir.y*disk_VELOCITY, z=dir.z*disk_VELOCITY})
|
|
end
|
|
return
|
|
end
|
|
|
|
minetest.register_tool("nssm:kienzan_hand", {
|
|
description = "Kienzan",
|
|
inventory_image = "kienzan_hand.png",
|
|
stack_max = 1,
|
|
-- not_in_creative_inventory=0,
|
|
on_use = disk_shoot_disk,
|
|
})
|
|
|
|
kienzan_ENTITY={
|
|
physical = false,
|
|
textures = {"kienzan.png"},
|
|
lastpos={},
|
|
collisionbox = {0,0,0,0,0,0},
|
|
}
|
|
|
|
kienzan_ENTITY.on_step =function (self, pos, node, dtime)
|
|
local timer = 0
|
|
minetest.register_globalstep(function(dtime)
|
|
timer = timer + dtime;
|
|
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
|
|
if obj:is_player() then
|
|
return
|
|
else
|
|
obj:set_hp(obj:get_hp()-20)
|
|
if obj:get_entity_name() ~= "nssm:kienzan_entity" then
|
|
if obj:get_hp()<=0 then
|
|
obj:remove()
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for dx=-1,1 do
|
|
-- for dy=-1,1 do
|
|
for dz=-1,1 do
|
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local n = minetest.env:get_node(p).name
|
|
if n ~= "nssm:kienzan_entity" then
|
|
minetest.env:set_node(t, {name="air"})
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
minetest.register_entity("nssm:kienzan_entity", kienzan_ENTITY)
|
|
|
|
minetest.register_craft({
|
|
output = 'nssm:kienzan_hand',
|
|
recipe = {
|
|
{'', '', ''},
|
|
{'nssm:great_energy_globe', 'nssm:great_energy_globe', 'nssm:great_energy_globe'},
|
|
{'', '', ''},
|
|
}
|
|
})
|