Supongo que el enemigo si esta cerca del personaje le sigue ¿no?, ahora haz que en vez de seguirlo active una variable (seguir = 1) y que si seguir es 1 pues le siga (if seguir = 1 {codigo seguir}). Bien, ahora digamos que es un 2d (Tipo mario bros), debes indicar en que posicion esta el enemigo respecto al jugador para que se diriga al contrario (if obj_player.x > other.x, o algo por el estilo) pues que se mueva hacia un lado u hacia el otro y marque que no le siga tras el ataque (seguir = 0, x -= 5, alarm[0] = room_speed * X), lo que hemos hecho es que al atacarle no le siga, se mueva en la direccion indicada (se supone que esta a la izquierda del player) y que tras X segundos vuelva a seguirle (alarm[0] -> seguir = 1).
No se si quedo un poco lioso xP, yo seria asi como lo haria y lo iria modificando segun errores o necesidades ^^
NUEVO:
Lo que tienes que hacer de invulnerable es para salir del paso, haz que los enemigos tengan un timing, que ataquen cada X segundos mediante alarmas (colision -> if atacarposible = 1 { hp -=1, atacarposible = 0, alarm[0] : room_speed * X). Era como lo tenia yo en un RPG que tengo por aqui y funciona de lujo ^^ (Sobretodo si tienen animaciones de ataque para que acaben las animaciones y demas :D)
No se si quedo un poco lioso xP, yo seria asi como lo haria y lo iria modificando segun errores o necesidades ^^
NUEVO:
Lo que tienes que hacer de invulnerable es para salir del paso, haz que los enemigos tengan un timing, que ataquen cada X segundos mediante alarmas (colision -> if atacarposible = 1 { hp -=1, atacarposible = 0, alarm[0] : room_speed * X). Era como lo tenia yo en un RPG que tengo por aqui y funciona de lujo ^^ (Sobretodo si tienen animaciones de ataque para que acaben las animaciones y demas :D)