function move_rocket()
{
set (my, PASSABLE); // don't collide with the player
VECTOR rocket_speed;
VECTOR rocket_pos;
VECTOR rocket_posold;
vec_set(rocket_posold.x, my.x); // Startposition der Rakete merken
my.pan = entBarrel.pan;
my.tilt = entBarrel.tilt;
wait (1);
my.emask |= (ENABLE_ENTITY|ENABLE_IMPACT|ENABLE_BLOCK);
my.event = remove_rocket;
my.skill40 = 1234; // I'm a rocket
my.skill20 = 0;
rocket_speed.x = 3;
while(my.skill20 < 1000)
{
if (my.skill20 > 2) // the rocket has moved away from the player? Then let's reset its passable flag
reset (my, PASSABLE);
effect (rocket_trail, 1, my.x, normal); // generate particle trails for the rocket
rocket_speed.x += 0.9;
rocket_pos.x += rocket_speed.x * time_step;
c_move (my, rocket_pos, nullvector, IGNORE_PASSABLE);
vec_set(rocket_pos.x, my.x); // Momentane Position der Rakete merken
c_trace(rocket_posold.x,rocket_pos.x,IGNORE_ME|IGNORE_PASSABLE|ACTIVATE_SHOOT|IGNORE_CONTENT);
// draw_line3d(rocket_posold.x,NULL,100); // draw line for debug
// draw_line3d(rocket_pos.x,vector(0,0,255),100); // draw line
vec_set(rocket_posold.x,rocket_pos.x); // Alte Position merken
wait (1);
}
remove_rocket();
}