vehicles can't shoot themselves. api cleanup

master
D00Med 2017-02-04 15:02:16 +10:00
parent e3fe555406
commit ba3700098f
2 changed files with 14 additions and 23 deletions

31
api.lua
View File

@ -186,17 +186,6 @@ function vehicles.object_drive(entity, dtime, def)
timer = 0
end
--timer dependant variables
local vec_forward_hover = {x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=hover_speed,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z}
local vec_forward_jump = {x=dir.x*speed/4*math.atan(0.5*timer-2)+8*dir.x,y=jump_speed,z=dir.z*speed/4*math.atan(0.5*timer-2)+8*dir.z}
local vec_forward = {x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=velo.y-0.5,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z}
local boat_forward = {x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=0,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z}
local vec_forward_fly = {x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=dir.y*(speed*0.2)*math.log(timer+0.5)+4*dir.y+1,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z}
local vec_boost = {x=dir.x*(speed*0.2)*math.log(timer+0.5)+8*dir.x,y=velo.y-0.5,z=dir.z*(speed*0.2)*math.log(timer+0.5)+8*dir.z}
local vec_backward = {x=-dir.x*(speed/4)*accell,y=velo.y-0.5,z=-dir.z*(speed/4)*accell}
local boat_backward = {x=-dir.x*(speed/4)*accell,y=0,z=-dir.z*(speed/4)*accell}
local vec_stop = {x=velo.x*decell,y=velo.y-gravity,z=velo.z*decell}
--boost reset
if boost and not entity.boost then
minetest.after(boost_charge, function()
@ -263,7 +252,7 @@ function vehicles.object_drive(entity, dtime, def)
entity.object:setvelocity({x=velo.x*0.9, y=-1, z=velo.z*0.9})
--boost
elseif ctrl.up and not shoots2 and ctrl.aux1 and entity.boost then
entity.object:setvelocity(vec_boost)
entity.object:setvelocity({x=dir.x*(speed*0.2)*math.log(timer+0.5)+8*dir.x,y=velo.y-0.5,z=dir.z*(speed*0.2)*math.log(timer+0.5)+8*dir.z})
if boost_effect ~= nil then
minetest.add_particlespawner(
5, --amount
@ -304,11 +293,11 @@ function vehicles.object_drive(entity, dtime, def)
--move forward
elseif ctrl.up and not fixed then
if not fly and not is_watercraft then
entity.object:setvelocity(vec_forward)
entity.object:setvelocity({x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=velo.y-0.5,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z})
elseif not fly then
entity.object:setvelocity(boat_forward)
entity.object:setvelocity({x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=0,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z})
else
entity.object:setvelocity(vec_forward_fly)
entity.object:setvelocity({x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=dir.y*(speed*0.2)*math.log(timer+0.5)+4*dir.y+1,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z})
end
--animation
if moving_anim ~= nil and not entity.moving and not hovering then
@ -318,9 +307,9 @@ function vehicles.object_drive(entity, dtime, def)
--move backward
elseif ctrl.down and not fixed then
if not is_watercraft then
entity.object:setvelocity(vec_backward)
entity.object:setvelocity({x=-dir.x*(speed/4)*accell,y=velo.y-0.5,z=-dir.z*(speed/4)*accell})
else
entity.object:setvelocity(boat_backward)
entity.object:setvelocity({x=-dir.x*(speed/4)*accell,y=0,z=-dir.z*(speed/4)*accell})
end
--animation
if moving_anim ~= nil and not entity.moving and not hovering then
@ -329,7 +318,7 @@ function vehicles.object_drive(entity, dtime, def)
end
--stop
elseif not ctrl.down or ctrl.up then
entity.object:setvelocity(vec_stop)
entity.object:setvelocity({x=velo.x*decell,y=velo.y-gravity,z=velo.z*decell})
--animation
if moving_anim ~= nil and entity.moving and not hovering then
entity.object:set_animation(stand_anim, anim_speed, 0)
@ -347,6 +336,7 @@ function vehicles.object_drive(entity, dtime, def)
obj:setvelocity(vec)
local object = obj:get_luaentity()
object.launcher = entity.driver
object.vehicle = entity.object
--lib_mount animation
if shoot_anim ~= nil and entity.object:get_animation().range ~= shoot_anim then
entity.object:set_animation(shoot_anim, anim_speed, 0)
@ -370,6 +360,7 @@ function vehicles.object_drive(entity, dtime, def)
obj:setvelocity(vec)
local object = obj:get_luaentity()
object.launcher = entity.driver
object.vehicle = entity.object
--lib_mount animation
if shoot_anim2 ~= nil and entity.object:get_animation().range ~= shoot_anim2 then
entity.object:set_animation(shoot_anim2, anim_speed, 0)
@ -388,7 +379,7 @@ function vehicles.object_drive(entity, dtime, def)
local vec_hover = {x=velo.x+0,y=hover_speed,z=velo.z+0}
entity.object:setvelocity(vec_hover)
else
entity.object:setvelocity(vec_forward_hover)
entity.object:setvelocity({x=dir.x*(speed*0.2)*math.log(timer+0.5)+4*dir.x,y=hover_speed,z=dir.z*(speed*0.2)*math.log(timer+0.5)+4*dir.z})
end
hovering = true
if jump_anim ~= nil and entity.object:get_animation().range ~= jump_anim and hovering then
@ -408,7 +399,7 @@ function vehicles.object_drive(entity, dtime, def)
local vec_jump = {x=velo.x+0,y=jump_speed,z=velo.z+0}
entity.object:setvelocity(vec_jump)
else
entity.object:setvelocity(vec_forward_hover)
entity.object:setvelocity({x=dir.x*speed/4*math.atan(0.5*timer-2)+8*dir.x,y=jump_speed,z=dir.z*speed/4*math.atan(0.5*timer-2)+8*dir.z})
end
hovering = true
if jump_anim ~= nil and entity.object:get_animation().range ~= jump_anim and hovering then

View File

@ -69,7 +69,7 @@ minetest.register_entity("vehicles:missile", {
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "vehicles:missile" and n ~= "vehicles:jet" and obj:get_luaentity().name ~= "__builtin:item" then
if obj:get_luaentity().name ~= "vehicles:missile" and obj ~= self.vehicle and obj:get_luaentity().name ~= "__builtin:item" then
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=1},
@ -151,7 +151,7 @@ minetest.register_entity("vehicles:missile_2", {
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "vehicles:missile_2" and n ~= "vehicles:tank" and n ~= "vehicles:jet" and obj:get_luaentity().name ~= "__builtin:item" then
if obj:get_luaentity().name ~= "vehicles:missile_2" and obj ~= self.vehicle and obj:get_luaentity().name ~= "__builtin:item" then
obj:punch(self.launcher, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=1},
@ -255,7 +255,7 @@ minetest.register_entity("vehicles:bullet", {
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "vehicles:bullet" and n ~= "vehicles:turret" and obj:get_luaentity().name ~= "__builtin:item" then
if obj:get_luaentity().name ~= "vehicles:bullet" and obj ~= self.vehicle and obj:get_luaentity().name ~= "__builtin:item" then
obj:punch(self.launcher, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=1},