Hola gente, soy nuevo en el foro ^^ y estoy haciendo un juego RPG 2D grid based-on.
Tengo una duda que me está molestando bastante. En el siguiente código, la instancia IF se repite hasta que al pollo le queda 1 golpe restante de vida:

if((obj_pj.sprite_index == spr_pjFrente) && (obj_pj.x==obj_pollo.x && obj_pj.y+200==obj_pollo.y))/*Si el sprite está mirando hacia el pollo y las posiciones de los objetos son correctas*/
{
    global.instanciaAtacada = instance_nearest (obj_pj.x,obj_pj.y-200,obj_pollo);//Detecta la ID de la instancia pollo atacada
    for(i=0;i<instance_number(obj_pollo);i++)
    {
        if(global.pollo[i,0]==global.instanciaAtacada)
        {
            global.pollo[i,2] -= global.basicHitPj;/*donde global.pollo[i,2] es la vida del mismo (20 de vida, al acertar el 4to golpe, muere.*/
            if(global.pollo[i,2]>0)//si sigue vivo
            {
                    instance_create(global.instanciaAtacada.x,global.instanciaAtacada.y,obj_danioPollo)//dibuja el daño infligido
            }
            else
            {
                with(global.instanciaAtacada)//si esta muerto
                 {
                    xPollo = global.instanciaAtacada.x;
                    yPollo = global.instanciaAtacada.y;
                    instance_destroy();
                 }
                 instance_create(xPollo,yPollo,obj_dropPollo);//lo destruye y crea un drop en su posición
            }
        }
        break;//TERMINA EL FOR
    }
}


les cuento más:
Este código se encuentra en un evento KEYPRESS (space), osea que las acciones deberían repetirse UNA sóla y única vez, a menos que presione space de nuevo.
En el juego, me acerco al npc pollo y al apretar space 2 veces, muere, mientras que debería morir al cuarto golpe(Vida del pollo=20, hit del pj=5).
coloqué algunos show_message a lo largo del código para ver qué pasaba, y el if principal, el que engloba todo, se repite hasta que al pollo le queda 1 golpe de vida. Se entiende mi problema? quise ser lo más específico posible, desde ya gracias por darme un lugar para publicar mis dudas ^^
Saludos y espero una ayuda  :-\

amigo pon esto

create
dano=true;//es daño pero como no se puede usar la ñ entonces dano  XD

tu codigo remplaza el primer if por este

if((obj_pj.sprite_index == spr_pjFrente) && (obj_pj.x==obj_pollo.x && obj_pj.y+200==obj_pollo.y) && dano=true)/*Si el sprite está mirando hacia el pollo y las posiciones de los objetos son correctas*/
{
dano=false;
alarm[0]=1*room_speed//aqui pones los segundos que quieras



en el evento alarm0


dano=true;
PURA VIDA



Para qué el alarm? osea, es solo para cambiar a dano=true?

si amigo exacto!!! sino lo haces asi el if se te va a repetir y repetir y repetir
PURA VIDA