@3run:
What you need is a second vertex or the angle of the gun itself.
I would go with a second vertex to have two points to calculate the direction of the laser.
Now if you have this you calculate the direction:
Code:
...
vec_for_vertex(pos_front,...); // starting position of the laser
vec_for_vertex(pos_back,...); // a vertex behind it but on the line of the laser

vec_set(temp,pos_front);
vec_sub(temp,pos_back);

// now temp is the difference and thus direction from pos_back to pos_front
// we now normalize it to a specific length
vec_normalize(temp,10000);

// now we add the pos_front vector to it to get the end vector
vec_add(temp,pos_front);

// now you trace from pos_front to temp
c_trace(pos_front,temp,IGNORE_PASSABLE);
...