....
action car()
{
var waypoint_number = 0;
VECTOR target_coords, temp;
var engine_handle;
ANGLE angle_diff;
var engine_offset;
int node = 1, p;
my.skill20 = 0;
my.skill21 = 1;
my.skill22 = -1;
my.skill23 = 50;
my.skill24 = 50;
my.emask |= ENABLE_SCAN;
my.event = make_way;
engine_offset = random(3);
if (my.skill1 == 2.000)
{
path_set(my, "car02");
car2 = me;
}
while (race_started == 0) {wait (1);}
engine_handle = ent_playloop (my, engine_wav, 50);
p = path_getnode(my,node, target_coords, NULL);
while (my.skill20 == 0)
{
temp.x = 60;
temp.y = 60;
temp.z = 150;
c_scan (my.x, my.pan, vector(60,60,150), SCAN_ENTS);
temp.x = target_coords.x - my.x;
temp.y = target_coords.y - my.y;
temp.z = 0;
if (vec_to_angle (angle_diff.pan, temp) < 150)
{
waypoint_number = path_nextnode(my, node, 1);
path_getnode(my,waypoint_number, target_coords, NULL);
}
angle_diff.pan = ang(angle_diff.pan - my.pan);
my.pan += my.skill27 * angle_diff.pan * 0.005;
if (((waypoint_number > 65) || (waypoint_number < 8)) || ((waypoint_number > 34) && (waypoint_number < 49)))
{
if (my.skill27 < (my.skill23 * time_step))
{
my.skill27 += 1 * time_step;
}
}
else
{
if (my.skill27 > (my.skill24 * time_step))
{
my.skill27 -= 0.5 * time_step;
}
}
if (waypoint_number == 66)
{
pick_new_path();
}
if ((my.skill25 < 500) && (my.skill27 > 15))
{
my.skill27 -= my.skill25 / 200;
}
my.skill28 = 0;
my.skill29 = 0;
move_mode = IGNORE_YOU + IGNORE_PASSABLE + GLIDE;
my.skill2 = ent_move (my.skill27, nullvector);
my.skill25 += my.skill2;
snd_tune (engine_handle, 50, (my.skill2 * 5 + engine_offset), 0);
wait(1);
}
}
...