drop arrow on remove

This commit is contained in:
tchncs 2016-09-01 16:10:34 +02:00
parent 819daa52f1
commit 5013537e24

View File

@ -10,13 +10,13 @@ bows.on_hit_object=function(self,target,hp,user,lastpos)
local opos=target:getpos() local opos=target:getpos()
local dir = user:get_look_dir() local dir = user:get_look_dir()
self.object:set_attach(target, "", {x=(opos.x-pos.x)*4,y=(pos.y-opos.y)*4,z=(pos.z-opos.z)*4},{x=0,y=-90,z=0}) self.object:set_attach(target, "", {x=(opos.x-pos.x)*4,y=(pos.y-opos.y)*4,z=(pos.z-opos.z)*4},{x=0,y=-90,z=0})
else else
bows.arrow_remove(self) bows.arrow_remove(self)
minetest.add_item(self.object:getpos(), self)
end end
return self return self
end end
bows.on_hit_node=function(self,pos,user,lastpos) bows.on_hit_node=function(self,pos,user,lastpos)
if not minetest.registered_nodes[minetest.get_node(pos).name].node_box then if not minetest.registered_nodes[minetest.get_node(pos).name].node_box then
local mpos={x=(pos.x-lastpos.x),y=(pos.y-lastpos.y),z=(pos.z-lastpos.z)} local mpos={x=(pos.x-lastpos.x),y=(pos.y-lastpos.y),z=(pos.z-lastpos.z)}
@ -48,7 +48,7 @@ bows.arrow_remove=function(self)
if self.target then self.target:punch(self.object, {full_punch_interval=1,damage_groups={fleshy=4}}, "default:bronze_pick", nil) end if self.target then self.target:punch(self.object, {full_punch_interval=1,damage_groups={fleshy=4}}, "default:bronze_pick", nil) end
self.object:set_hp(0) self.object:set_hp(0)
self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "bows:bow_wood", nil) self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "bows:bow_wood", nil)
return self return self
end end
minetest.register_entity("bows:arrow",{ minetest.register_entity("bows:arrow",{
@ -71,8 +71,8 @@ minetest.register_entity("bows:arrow",{
self.target:setvelocity({x=0, y=4, z=0}) self.target:setvelocity({x=0, y=4, z=0})
self.target:setacceleration({x=0, y=-10, z=0}) self.target:setacceleration({x=0, y=-10, z=0})
self.on_punch=function(self, puncher, time_from_last_punch, tool_capabilities, dir) end self.on_punch=function(self, puncher, time_from_last_punch, tool_capabilities, dir) end
bows.arrow_remove(self) bows.arrow_remove(self)
end end
return self return self
end, end,
on_activate = function(self, staticdata) on_activate = function(self, staticdata)
@ -84,7 +84,8 @@ minetest.register_entity("bows:arrow",{
bows.tmp=nil bows.tmp=nil
self.object:set_properties({textures={self.arrow}}) self.object:set_properties({textures={self.arrow}})
else else
self.object:remove() minetest.add_item(self.object:getpos(), self.arrow)
self.object:remove()
end end
end, end,
stuck=false, stuck=false,
@ -98,7 +99,8 @@ minetest.register_entity("bows:arrow",{
if self.stuck then if self.stuck then
if self.target and self.target:get_hp()<=1 then self.timer=-1 end if self.target and self.target:get_hp()<=1 then self.timer=-1 end
if self.timer<0 then if self.timer<0 then
bows.arrow_remove(self) minetest.add_item(self.object:getpos(), self.arrow)
bows.arrow_remove(self)
end end
return self return self
end end