--
--Script de la IA del Cojoncio

tiempoEspera = tiempoEspera - FRAMETIME


--
-- borra todas las acciones excepto las de moverse y 
-- defenderse si han sido activadas la ultima vez
AccionIA  = Accion(BIT_AND,
		   AccionIA,
		   Accion(BIT_OR,
			  Accion(BIT_OR,
				 ACCION_DOWN,
				 ACCION_RIGHT),
			  ACCION_LEFT)
		   )

--
-- cada tiempoEspera ejecuta la IA
if tiempoEspera < 0 then 
	tiempoEspera = 0.05
	AccionIA = 0 
	
   --
   --ESTADO ATAQUE
	if estado == ESTADO_ATAQUE then
      if DISTANCIA_AL_OTRO > (DIST_PUNCH1 / 2.0) then
         if Accion(GET_FLIP) == 1 then
            AccionIA = Accion(BIT_OR,AccionIA,ACCION_RIGHT)
         else
            AccionIA = Accion(BIT_OR,AccionIA,ACCION_LEFT)
         end
      end
      --si esta demasiado cerca ataca y no avanza
      if DISTANCIA_AL_OTRO < DIST_PUNCH2 then
		 if math.random() < 0.5 then
			AccionIA = Accion(BIT_OR,AccionIA,ACCION_PUNCH1)
		 else
			AccionIA = Accion(BIT_OR,AccionIA,ACCION_KICK1)
		 end
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_LEFT) )
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_RIGHT) )
      elseif DISTANCIA_AL_OTRO < DIST_PUNCH1 then
 		 AccionIA = Accion(BIT_OR,AccionIA,ACCION_PUNCH2)
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_LEFT) )
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_RIGHT) )
      elseif DISTANCIA_AL_OTRO < DIST_KICK2 then
 		 AccionIA = Accion(BIT_OR,AccionIA,ACCION_KICK2)
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_LEFT) )
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_RIGHT) )
      --Los combos los lanza a partir del doble de la distancia al puņo
      elseif DISTANCIA_AL_OTRO > (DIST_PUNCH1 * 2.0) then
         if math.random() <0.02 then 
            AccionIA = Accion(BIT_OR,AccionIA, ACCION_COMBOBOLA)
         end
      end
      -- 10 % de posibilidades de saltar hacia atras
      if math.random() < 0.1 then
         if Accion(GET_FLIP) == 1 then
            AccionIA = Accion(BIT_OR,AccionIA,ACCION_LEFT)
         else
            AccionIA = Accion(BIT_OR,AccionIA,ACCION_RIGHT)
         end
         AccionIA = Accion(BIT_OR,AccionIA,ACCION_UP)
      end

      -- si se esta muriendo 20% de pasar a la huida
      if (Accion(GET_VIDA) / Accion(GET_VIDA_TOTAL)) < 0.2 then
         if math.random()<0.1 then estado = ESTADO_HUIR end
      end

      -- y un 2% de pasar a defensa y 20% de no hacer nada
      if math.random() < 0.02 then estado = ESTADO_DEFENSA end
      if math.random() < 0.2 then AccionIA = 0 end

   --
   --ESTADO DEFENSA
	elseif estado == ESTADO_DEFENSA then
      if DISTANCIA_AL_OTRO < 0.3 then
         AccionIA = ACCION_DOWN
      else
         if (Accion(GET_VIDA) / Accion(GET_VIDA_TOTAL)) < 0.2 then
            estado = ESTADO_HUIR
         end
         if math.random()<0.1 then estado=ESTADO_HUIR end
      end
      if math.random()<0.1 then estado=ESTADO_ATAQUE end

   --
   --ESTADO HUIR
	elseif estado == ESTADO_HUIR then
      -- se separa hasta un 60% de la pantalla
      if DISTANCIA_AL_OTRO < 0.6 then
         if Accion(GET_FLIP) == 1 then
            AccionIA = Accion(BIT_OR,AccionIA,ACCION_LEFT)
         else
            AccionIA = Accion(BIT_OR,AccionIA,ACCION_RIGHT)
         end
         AccionIA = Accion(BIT_OR,AccionIA,ACCION_UP)
      else
         estado = ESTADO_DEFENSA
      end

      if math.random()<0.15 then estado=ESTADO_ATAQUE end
      if math.random()<0.2 then accion=0 end
   
   --
   --DEFAULT
	else estado = ESTADO_ATAQUE
   end

end

--
--si salta hacia los dos lados, hacer que se decante 
--por el contrario al oponente
if (Accion(BIT_AND,AccionIA,ACCION_UP) ~= 0) and
   (Accion(BIT_AND,AccionIA,ACCION_LEFT) ~= 0) and
   (Accion(BIT_AND,AccionIA,ACCION_RIGHT) ~= 0)  then
      if Accion(GET_FLIP) == 1 then
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_LEFT))
      else
         AccionIA = Accion(BIT_AND,AccionIA, Accion(BIT_C1,ACCION_RIGHT))
      end
end

-- caso pollada
if Accion(OTRO_ANI_SEL,"ANI_COMBO6_OUCH")
   and ( not Accion(ANI_SEL,"ANI_COMBO6_OUCH") )
   and ( not Accion(ANI_SEL,"ANI_COMBO5_OUCH") )
   and ( not Accion(ANI_SEL,"ANI_COMBO6") )
   and ( not Accion(ANI_SEL,"ANI_COMBO5") )
   and ( not Accion(SALTANDO) )
then
	TiempoHastaPollaliti = TiempoHastaPollaliti + FRAMETIME
	if TiempoHastaPollaliti > 1.0 then
		if (math.random()<0.7)  then
			AccionIA = ACCION_POLLALITI1
		else
			AccionIA = ACCION_POLLADA1
		end
	else
		AccionIA = 0
	end
else
	if Accion(OTRO_ANI_SEL,"ANI_COMBO6_OUCH") then
		AccionIA = 0
	end
	TiempoHastaPollaliti = 0.0
end