If you dont care about the helmets to bounce, you could do it abit simplier:
detach(helmet);
vel = vectorScale(vDir,0 - iDamage); <<calculate velocity by the damage, try it out...
vel = (vel[0],vel[1],randomIntRange(300,600));
helmet = spawn(model,head)
helmet moveGravity(vel,10);
wait(10) helmet delete;
or maybe cap the amount of max helmets at the same time