rangedweapons = {}

function rangedweapons.launch_projectile(obj, def)
	local self = obj:get_luaentity()
	local pos = obj:get_pos()
	local dir = minetest.facedir_to_dir(def.param2)
	local targetpos = vector.add(vector.multiply(dir, def.distance), pos)

	self.startpos = pos
	self.timeout = def.timeout
	self.radius = def.radius

	local newdir = vector.multiply(vector.direction(pos, targetpos), def.speed)
	local dspeed = def.speed/5

	obj:set_velocity({x=newdir.x, y=def.climb*def.speed/8, z=newdir.z})
	obj:setacceleration({x=(-newdir.x/dspeed)+math.random(-7, 7), y=-def.climb*def.speed/3.5, z=(-newdir.z/dspeed)+math.random(-7, 7)})
end

function rangedweapons.explode(pos, radius)
	tnt.boom(pos, {
		radius = radius,
		damage_radius = radius+1,
		explode_center = false,
		ignore_protection = false,
		ignore_on_blast = false
	})
end