Projectile speed sometimes ignored

Moderator: Moderator

Post Reply
Message
Author
Susramanian
Spiderkin
Posts: 454
Joined: Sat May 15, 2010 3:09 am

Projectile speed sometimes ignored

#1 Post by Susramanian »

The trouble is this function in engines/default/engine/Projectile.lua:

Code: Select all

function _M:makeProject(src, display, def, do_move, do_act, do_stop)
	display = display or {display='*'}
	local speed = def.tg.speed
	local name = def.tg.name
	if def.tg.talent then
		speed = src:getTalentProjectileSpeed(def.tg.talent)
		name = def.tg.talent.name
		def.tg.talent_id = def.tg.talent.id
		def.tg.talent = nil
	end
	speed = speed or 10
	local p =self.new{
		name = name,
		display = display.display or ' ', color = display.color or colors.WHITE, image = display.image or nil,
		travel_particle = display.particle,
		travel_particle_args = display.particle_args,
		trail_particle = display.trail,
		src = src,
		src_x = src.x, src_y = src.y,
		project = {def=def},
		energy = {mod=speed},
		tmp_proj = {},
	}

	game.level.map:checkAllEntities(def.x, def.y, "on_projectile_target", p)

	return p
end
At first, it correctly sets the projectile speed to the value passed to the function:

Code: Select all

local speed = def.tg.speed
But then it sets the speed to the output of a function which returns nil if the talent responsible for the projectile doesn't have proj_speed:

Code: Select all

speed = src:getTalentProjectileSpeed(def.tg.talent)
Then, since speed is now nil, this line sets it to 10:

Code: Select all

speed = speed or 10
To fix my copy, I just changed

Code: Select all

speed = speed or 10
to

Code: Select all

speed = def.tg.speed or speed or 10

Post Reply