Mystic/mod_jail/nssm/kienzan.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'},
{'', '', ''},
}
})