Hmm. Im not really sure I fully understand your code, But I will try to help any how.
Im assuming (ass outta you and me) that you want the enemy to track the player, but only update his direction every so often so the player can get away.
This code will have the green box be controlled by the mouse. The red box will go after it every 1000 loops.
sync on
sync rate 100
box 0,0,100,100
get image 1,0,0,20,20,1
cls
player = 1;
playerX = 0; playerY = 0;
playerImage = 1;
enemy = 2;
enemyX = screen width()/2;enemyY = screen height()/2;
enemyImage = 1;
enemyUpdateRate = 1000;
enemyUpdateTime = enemyUpdateRate;
enemySpeed = 1;
enemyAngle = 0;
sprite enemy,enemyX,enemyY,enemyImage
set sprite diffuse enemy,100,0,0
offset sprite enemy,sprite width(enemy)/2,sprite height(enemy)/2
do
playerX = mouseX()
playerY = mouseY()
sprite player, playerX,playerY,playerImage
set sprite diffuse player, 0,100,0
offset sprite player,sprite width(player)/2,sprite height(player)/2
if timer() > enemyUpdateTime
enemyUpdateTime = timer() + enemyUpdateRate
RotateToPoint(enemy,sprite X(enemy),sprite Y(enemy),sprite X(player),sprite Y(player))
endif
move sprite enemy,enemySpeed
sync
loop
Function RotateToPoint(SpriteNum,Xo,Yo,Xd,Yd)
X = Xo - Xd
Y = Yo - Yd;
spriteAngle = -atanfull(X,Y)
rotate sprite spriteNum,spriteAngle
Endfunction
EDIT:
And this code will have the red box update his direction when he gets to the edge of the screen.
sync on
sync rate 100
box 0,0,100,100
get image 1,0,0,20,20,1
cls
player = 1;
playerX = 0; playerY = 0;
playerImage = 1;
enemy = 2;
enemyX = screen width()/2;enemyY = screen height()/2;
enemyImage = 1;
enemyUpdate = 1;
enemySpeed = 5;
enemyAngle = 0;
sprite enemy,enemyX,enemyY,enemyImage
set sprite diffuse enemy,100,0,0
offset sprite enemy,sprite width(enemy)/2,sprite height(enemy)/2
do
playerX = mouseX()
playerY = mouseY()
sprite player, playerX,playerY,playerImage
set sprite diffuse player, 0,100,0
offset sprite player,sprite width(player)/2,sprite height(player)/2
if enemyUpdate = 1
enemyUpdate = 0
RotateToPoint(enemy,sprite X(enemy),sprite Y(enemy),sprite X(player),sprite Y(player))
endif
move sprite enemy,enemySpeed
if (sprite X(enemy) > screen width()) OR (sprite X(enemy) < 0) OR (sprite Y(enemy) < 0) OR (sprite Y(enemy) > screen height())
enemyUpdate = 1
endif
sync
loop
Function RotateToPoint(SpriteNum,Xo,Yo,Xd,Yd)
X = Xo - Xd
Y = Yo - Yd;
spriteAngle = -atanfull(X,Y)
rotate sprite spriteNum,spriteAngle
Endfunction