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;
my.skill5 = 0; // used for vertical movement
while (my.skill20 < 10)
{
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
// my.roll += 20 * time_step;
rocket_speed.x = 300 * time_step;
rocket_speed.y = 0;
rocket_speed.z = 0;
my.skill5 += time_step;
if (my.skill5 > 5)
{
rocket_speed.z -= fall_speed * time_step;
}
my.skill20 += 1 * time_step;
c_move (my, rocket_speed, 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);
vec_set(rocket_posold.x,rocket_pos.x); // Alte Position merken
wait (1);
}
remove_rocket();
}