function effect_rocket_tail_fast(PARTICLE* p) {
p.flags &= ~MOVE;
}
function effect_rocket_tail(PARTICLE* p) {
p.flags |= (BEAM | MOVE | TRANSLUCENT);
p.bmap = raketen_schweif_tga;
p.alpha = 35 + random(5);
p.size = 50;
p.event = effect_rocket_tail_fast;
}
action rocket() {
ENTITY* victim = NULL;
VECTOR vel_temp;
var temp = 0;
my.TEMPO = 30;
ANGLE ang_temp;
// aim
victim = ptr_for_handle(my.TARGET);
if (victim != NULL) {
vec_set(ang_temp,opfer.x);
vec_sub(ang_temp,my.x);
vec_to_angle(ang_temp,ang_temp);
vec_set(my.pan, vector(ang_temp.pan, ang_temp.tilt, 0));
}
// fly
c_move(my, vector(my.TEMPO * time_step, 0, 0), nullvector, IGNORE_ME | IGNORE_PASSABLE | IGNORE_YOU);
// smoke tail
temp += time_step;
vec_for_angle(vel_temp, my.pan);
vec_normalize(vel_temp, -my.TEMPO);
if (temp >= effect_level) {
effect(effect_rocket_tail, 1, my.x, vel_temp);
temp -= effect_level;
}
}