ENTITY* my_target;
action my_enemy()
{
while (!player) {wait (1);}
var idle_percentage = 0;
var run_percentage = 0;
VECTOR content_right;
VECTOR content_left;
VECTOR temp;
my.health = 100;
my.eflags |= FAT | NARROW;
my.emask |= ENABLE_SHOOT | ENABLE_SCAN;
c_setminmax(my);
my.status = idle;
while(my.health>0)
{
if (my.status == idle)
{
ent_animate(my, "stand", idle_percentage, ANM_CYCLE);
idle_percentage += 3 * time_step;
if (vec_dist (player.x, my.x) < 5000)
{
if ((c_scan(my.x, my.pan, vector(120, 60, 4500), IGNORE_ME) > 0) && (you == player))
{
my.status = attacking;
}
}
}
if (my.status == attacking)
{
if (c_content (content_right.x, 0) + c_content (content_left.x, 0) == 2)
{
vec_set(temp, player.x);
vec_sub(temp,my.x);
vec_to_angle(my.pan, temp);
}
if (vec_dist (player.x, my.x) > 500)
{
vec_set(content_right, vector(50, -20, -15));
vec_rotate(content_right, my.pan);
vec_add(content_right.x, my.x);
if (c_content (content_right.x, 0) != 1)
{
my.pan += 5 * time_step;
}
vec_set(content_left, vector(50, 20, -15));
vec_rotate(content_left, my.pan);
vec_add(content_left.x, my.x);
if (c_content (content_left.x, 0) != 1)
{
my.pan -= 5 * time_step;
}
ent_animate(my, "alert", 100, NULL);
}
else
{
ent_animate(my, "alert", 100, NULL);
}
if ((total_frames % 20) == 1)
{
ak_shoot_handle=snd_play(ak_shoot_wav,70,0);
enemy_bullet(50, 7, 10);
}
if (vec_dist (player.x, my.x) > 6000)
{
my.status = idle;
}
c_scan(my.x, my.pan, vector(360, 60, 4500), IGNORE_ME | SCAN_ENTS | SCAN_LIMIT);
if (you)
{
my_target = you;
my_target.scale_z = 4;
vec_set(temp, my_target.x);
vec_sub(temp, my.x);
vec_to_angle(my.pan, temp);
my.tilt = 0;
while (vec_dist (my.x, my_target.x) > 50)
{
c_move (my, vector(20 * time_step, 0, 0), nullvector, GLIDE);
ent_animate(my, "run", run_percentage, ANM_CYCLE);
run_percentage += 6 * time_step;
wait(1);
}
my.skill99 = 0;
while (my.skill99 < my_target.skill1)
{
my.status = attacking;
wait(1);
}
ent_remove(my_target);
}
else
{
my.status = idle;
}
}
wait (1);
}
my.event = NULL;
RagDoll_Spawn(me);
}
action target_cover()
{
set (my, PASSABLE | INVISIBLE);
my.emask |= ENABLE_SCAN;
}