Ah I see. Sure, BEAM stretches the particle along the p.vel_x direction.
Just do the movement by yourself then (without setting MOVE), for example as follows:

void p_event(PARTICLE* p)
{
p.skill_z += 0.25*time_step; // maybe add a maxv limit here
p.z += p.skill_z*time_step;
}


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends