Te dejo uno como el de zela ya con distancia maxima, también lo puedes adaptar para que quede en un script. Al final puedes usar el que quieras, creo que el de zela puede ser algo más fácil de entender y poquitín más lento. En fín en gm da casi lo mismo.
[gml]
var x1, y1, d, x2, y2, d2, dot;
d=point_distance(objM.x, objM.y, mouse_x, mouse_y);
x1=(objM.x-mouse_x)/d;
y1=(objM.y-mouse_y)/d;
with(obj_mariposa){
d2=point_distance(objM.x, objM.y, mouse_x, mouse_y);
if (d2>distancia) continue;
x2=(objM.x-x)/d2;
y2=(objM-y-y)/d2;
dot=radtodeg( arccos(x1*x2+y1*y2) );
//Y listo dot es igual al angulo que querías
if ( dot<90 ){
//Wololo
}
}[/gml]
[gml]
var x1, y1, d, x2, y2, d2, dot;
d=point_distance(objM.x, objM.y, mouse_x, mouse_y);
x1=(objM.x-mouse_x)/d;
y1=(objM.y-mouse_y)/d;
with(obj_mariposa){
d2=point_distance(objM.x, objM.y, mouse_x, mouse_y);
if (d2>distancia) continue;
x2=(objM.x-x)/d2;
y2=(objM-y-y)/d2;
dot=radtodeg( arccos(x1*x2+y1*y2) );
//Y listo dot es igual al angulo que querías
if ( dot<90 ){
//Wololo
}
}[/gml]