В прошлом скрипте чем выше/ниже над целью, тем выше скорость передвижения.
Вот другой алгоритм на индусском (здесь скорость не меняется), все работает норм:
SUB(Motion,$start1,$start2,$speed)
$x=$_xmouse
$y=$_ymouse
$sign_X=$start1-$x
$sign_y=$start2-$y
$dist=DIST($x,$y,$start1,$start2)
IF($sign_x!0)
FOR($var,$var<$dist+$var,$speed)
INC($dist,-$speed)
$xk=INT($start1-$sign_x*$dist/($dist+$var))
$yk=INT(($xk)*($start2-$y)/($start1-$x)+$y-($start2-$y)*$x/($start1-$x))
MOVE($xk,$yk)
END_CYC
ELSE
FOR($var,$var<$dist+$var,$speed)
INC($dist,-$speed)
$yk=INT($start2-$sign_y*$dist/($dist+$var))
MOVE($_xmouse,$yk)
END_CYC
END_IF
MOVE($start1,$start2) // На всякий пожарный
END_SUB
Motion(500,500,10) // Координаты и скорость
Motion(321,46,1)
HALT