Hola de nuevo makeros!!

En mi juego, estoy creando una IA para que funcione como un bot, es decir, no como enemigo.

Los enemigos son los "mineros". El bot tiene que recoger oro, y cuando estén los mineros cerca de él, pues que intente escabullirse de ellos. Para ello he creado el siguiente código, con la intención de que se esconda detrás de muros si existen y si no, pues que vaya donde está el player, pero evitando en el camino a los mineros (suele haber en la room más de uno):


Step event


if distance_to_object(obj_minero_AI)<=128{target=obj_minero_AI}
else
if distance_to_object(obj_minero_AD)<=128{target=obj_minero_AD}
else
if distance_to_object(obj_minero_ArD)<=128{target=obj_minero_ArD}
else
if distance_to_object(obj_minero)<=128{target=obj_minero}
else
if distance_to_object(obj_minero_creado)<=128{target=obj_minero_creado}
else
target=-1
   
    if target=-1{scr_buscar_tesoro()}//Es el script para buscar oro
    else
    {
       
        if instance_exists(obj_muro)
        {
        var1 = instance_nearest(x,y,obj_muro)
        var2 = point_direction(target.x,target.y,var1.x+32,var1.y+32)
       
            mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),8,obj_muro)//Para esconderse detras de muros
            mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)//Si ademas le esta siguiendo el minero, para huir de el
                         
         }
         else
         {
           
                var1 = instance_nearest(x,y,obj_player)//Ir a donde está el player
                var2 = point_direction(target.x,target.y,var1.x+16,var1.y+16)
                    if room=room_level2
                    {
                    mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,obj_morir)//Evitar el objeto morir (acantilado)
                    mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)//Evitar ademas lo mineros
                    }
                    if room=room_level5
                    {
                    mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,obj_morir_lvl5)//Evitar el objeto morir (acantilado_1)
                    mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)//Evitar ademas lo minero
                    }
                    else{mp_potential_step_object(var1.x+lengthdir_x(64,var2),var1.y+lengthdir_y(64,var2),0.1,target)}//Evitar a los mineros
               
                }
        }


Con este código, hay veces que el bot hace lo que debería, pero hay veces que se atasca cerca de los muros y no hace nada.

¿Qué estoy haciendo mal?

Grax!!!

tu código me lia, pk no se me da bien interpretar códigos de otros y menos ahora con la resaca xD

pero... un pequeño detalle, sabes que si pones "else", aunque hagas un salto de linea y debajo pones if, eso cuenta como un "else if" ?

es decir, no es lo mismo
[gml]if blalbalba {
    blabla
    }
else
    if blablable {
    blablable
    }
[/gml]

que...
[gml]if blalbalba {
    blabla
    }
else {
    if blablable {
        blablable
        }
    }
[/gml]

el primero es como poner

[gml]if blalbalba {
    blabla
    }
else if blablable {
    blablable
    }
[/gml]


No se si mexplico.... :B
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Si se te ha pasado ya la resaca podrías echarme un cable  XD

ostii, disculpa, esque no me fijé que pones las llaves {}  en la misma linea LeL...

pues, este es uno de esos momentos en que has de esperar a gente talla clamud o algo así, lo siento, tengo mi proyecto demasiado en mi cabeza :B
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]