var set_stafe_time = 0;
function stafe_time_set()
{
if(set_stafe_time == 0)
{
stafe_time = 1 + random(2);
stafeing_direction = integer(random(4));
set_stafe_time = 1;
}
}
function enemy_dummy_combat()
{
VECTOR enemy_dummy_speed;
stafe_time_set();
if (vec_dist (my.x, player.x) > 500)
{
while (stafe_time > 0)
{
stafe_time -= time_step / 16;
if(stafeing_direction == 0)
{
enemy_dummy_speed.x = 5 * time_step;
enemy_dummy_speed.y = 0;
enemy_dummy_speed.z = 0;
c_move (my, enemy_dummy_speed, nullvector, IGNORE_PASSABLE | GLIDE);
ent_animate(my, "stafe_forward", anim_percentage, ANM_CYCLE);
anim_percentage %= 100;
anim_percentage += 8 * time_step;
}
if(stafeing_direction == 1)
{
enemy_dummy_speed.x -= 5 * time_step;
enemy_dummy_speed.y = 0;
enemy_dummy_speed.z = 0;
c_move (my, enemy_dummy_speed, nullvector, IGNORE_PASSABLE | GLIDE);
ent_animate(my, "stafe_backward", anim_percentage, ANM_CYCLE);
anim_percentage %= 100;
anim_percentage += 8 * time_step;
}
if(stafeing_direction == 2)
{
enemy_dummy_speed.x = 0 * time_step;
enemy_dummy_speed.y = 5;
enemy_dummy_speed.z = 0;
c_move (my, enemy_dummy_speed, nullvector, IGNORE_PASSABLE | GLIDE);
ent_animate(my, "stafe_left", anim_percentage, ANM_CYCLE);
anim_percentage %= 100;
anim_percentage += 8 * time_step;
}
if(stafeing_direction == 3)
{
enemy_dummy_speed.x = 0 * time_step;
enemy_dummy_speed.y -= 5;
enemy_dummy_speed.z = 0;
c_move (my, enemy_dummy_speed, nullvector, IGNORE_PASSABLE | GLIDE);
ent_animate(my, "stafe_right", anim_percentage, ANM_CYCLE);
anim_percentage %= 100;
anim_percentage += 8 * time_step;
}
}
set_stafe_time = 0;
}
if (vec_dist (my.x, player.x) < 500)
{
vec_set(temp, player.x);
vec_sub(temp, my.x);
vec_to_angle(my.pan, temp);
my.tilt = 0;
//is the distance > 200, enemy wait and stand
if (vec_dist (my.x, player.x) >= 200)
{
ent_animate(my, "stand", anim_percentage, ANM_CYCLE);
anim_percentage += 1 * time_step;
}
//is the distance < 200, enemy go to the player to distance 50
if ((vec_dist (my.x, player.x) < 200)&&(vec_dist (my.x, player.x) > 50))
{
enemy_dummy_speed.x = 5 * time_step;
enemy_dummy_speed.y = 0;
enemy_dummy_speed.z = 0;
c_move (my, enemy_dummy_speed, nullvector, IGNORE_PASSABLE | GLIDE);
ent_animate(my, "stafe_forward", anim_percentage, ANM_CYCLE);
anim_percentage += 8 * time_step;
if (my.hit_by_player == 1) //by attack from player
{
//here your enemy attack function
}
}
}
}