Exemplo n.º 1
0
        private async Task antes_Fin_Turno()
        {
            if (!pelea.turno_actual)
            {
                return;
            }

            if (configuracion.tactica == Tactica.PASIVA)
            {
                await fin_Turno(400);

                return;
            }

            if (pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo() && configuracion.tactica == Tactica.AGRESIVA)
            {
                await fin_Turno(400);

                return;
            }

            if (pelea.jugador_luchador.pm > 0 && pelea.get_Enemigos.Any())
            {
                bool cercano = configuracion.tactica == Tactica.AGRESIVA || !hechizo_lanzado;
                await get_Mover(cercano, pelea.get_Enemigo_Mas_Cercano());

                final_turno = true;
            }

            await fin_Turno(400);
        }
Exemplo n.º 2
0
        public async Task <ResultadoLanzandoHechizo> manejador_Hechizos(PeleaHechizos hechizo)
        {
            if (hechizo_para_lanzar != -1 && hechizo_para_lanzar == hechizo.id)
            {
                if (GlobalConf.mostrar_mensajes_debug)
                {
                    cuenta.logger.log_informacion("DEBUG", $"Se ha lanzado el hechizo {hechizo.nombre} atacando a {enemigos_tocados} enemigos en la celda {celda_objetivo}");
                }

                await pelea.get_Lanzar_Hechizo(hechizo.id, celda_objetivo);

                hechizo_para_lanzar = -1;
                celda_objetivo      = -1;
                enemigos_tocados    = 0;

                return(ResultadoLanzandoHechizo.LANZADO);
            }

            if (!get_Distancia_Buena(hechizo))
            {
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }

            if (hechizo.necesita_piedra)//Para capturar
            {
                ObjetosInventario arma = cuenta.juego.personaje.inventario.get_Objeto_en_Posicion(InventarioPosiciones.ARMA);
                if (arma != null && arma.id_modelo != 83)
                {
                    return(await get_Lanzar_Hechizo_Simple(hechizo));
                }
                else
                {
                    return(ResultadoLanzandoHechizo.NO_LANZADO);
                }
            }

            if (hechizo.focus == HechizoFocus.CELDA_VACIA)
            {
                return(await lanzar_Hechizo_Celda_Vacia(hechizo));
            }

            if (hechizo.metodo_lanzamiento == MetodoLanzamiento.AMBOS && !hechizo.es_aoe)
            {
                return(await get_Lanzar_Hechizo_Simple(hechizo));
            }

            if (hechizo.metodo_lanzamiento == MetodoLanzamiento.ALEJADO && !hechizo.es_aoe && !pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo())
            {
                return(await get_Lanzar_Hechizo_Simple(hechizo));
            }

            if (hechizo.metodo_lanzamiento == MetodoLanzamiento.CAC && !hechizo.es_aoe && pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo())
            {
                return(await get_Lanzar_Hechizo_Simple(hechizo));
            }

            if (hechizo.metodo_lanzamiento == MetodoLanzamiento.CAC && !hechizo.es_aoe && !pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo())
            {
                return(await get_Mover_Lanzar_hechizo_Simple(hechizo, get_Objetivo_Mas_Cercano(hechizo)));
            }

            if (hechizo.es_aoe)
            {
                if (pelea.total_enemigos_vivos > 1)
                {
                    return(await lanzar_Hechizo_AOE(hechizo));
                }
                else
                {
                    return(await get_Lanzar_Hechizo_Simple(hechizo));
                }
            }

            return(ResultadoLanzandoHechizo.NO_LANZADO);
        }