public async Task <ResultadoLanzandoHechizo> manejador_Hechizos(HechizoPelea hechizo)
        {
            if (hechizo.focus == HechizoFocus.CELDA_VACIA)
            {
                return(await lanzar_Hechizo_Celda_Vacia(hechizo));
            }

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

            if (hechizo.metodo_lanzamiento == MetodoLanzamiento.ALEJADO && !cuenta.Game.Fight.esta_Cuerpo_A_Cuerpo_Con_Enemigo())
            {
                return(await get_Lanzar_Hechizo_Simple(hechizo));
            }

            if (hechizo.metodo_lanzamiento == MetodoLanzamiento.CAC && cuenta.Game.Fight.esta_Cuerpo_A_Cuerpo_Con_Enemigo())
            {
                return(await get_Lanzar_Hechizo_Simple(hechizo));
            }

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

            return(ResultadoLanzandoHechizo.NO_LANZADO);
        }
示例#2
0
        private async Task <ResultadoLanzandoHechizo> lanzar_Hechizo_Celda_Vacia(HechizoPelea hechizo_pelea)
        {
            if (pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id) != FallosLanzandoHechizo.NINGUNO)
            {
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }

            if (hechizo_pelea.focus == HechizoFocus.CELDA_VACIA && pelea.get_Cuerpo_A_Cuerpo_Enemigo().Count() == 4)
            {
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }

            Spell      hechizo       = cuenta.game.character.get_Hechizo(hechizo_pelea.id);
            SpellStats datos_hechizo = hechizo.get_Stats();

            List <short> rangos_disponibles = pelea.get_Rango_hechizo(pelea.jugador_luchador.celda, datos_hechizo, mapa);

            foreach (short rango in rangos_disponibles)
            {
                if (pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id, pelea.jugador_luchador.celda, mapa.GetCellFromId(rango), mapa) == FallosLanzandoHechizo.NINGUNO)
                {
                    if (hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC || hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.AMBOS && mapa.GetCellFromId(rango).GetDistanceBetweenCells(pelea.jugador_luchador.celda) != 1)
                    {
                        continue;
                    }

                    await pelea.get_Lanzar_Hechizo(hechizo_pelea.id, rango);

                    return(ResultadoLanzandoHechizo.LANZADO);
                }
            }

            return(ResultadoLanzandoHechizo.NO_LANZADO);
        }
        private async Task <ResultadoLanzandoHechizo> lanzar_Hechizo_Celda_Vacia(HechizoPelea hechizo_pelea)
        {
            if (_fight.get_Puede_Lanzar_hechizo(hechizo_pelea.id) != FallosLanzandoHechizo.NONE)
            {
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }

            if (hechizo_pelea.focus == HechizoFocus.CELDA_VACIA && _fight.get_Cuerpo_A_Cuerpo_Enemigo().Count() == 4)
            {
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }

            Hechizo      hechizo       = cuenta.Game.Character.get_Hechizo(hechizo_pelea.id);
            HechizoStats datos_hechizo = hechizo.get_Stats();

            List <short> rangos_disponibles = _fight.get_Rango_hechizo(_fight.jugador_luchador.celda, datos_hechizo, _map);

            foreach (short rango in rangos_disponibles)
            {
                if (_fight.get_Puede_Lanzar_hechizo(hechizo_pelea.id, _fight.jugador_luchador.celda, _map.get_Celda_Id(rango), _map) == FallosLanzandoHechizo.NONE)
                {
                    if (hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC || hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.AMBOS && _map.get_Celda_Id(rango).get_Distancia_Entre_Dos_Casillas(_fight.jugador_luchador.celda) != 1)
                    {
                        continue;
                    }

                    await _fight.get_Lanzar_Hechizo(hechizo_pelea.id, rango);

                    return(ResultadoLanzandoHechizo.LANZADO);
                }
            }

            return(ResultadoLanzandoHechizo.NO_LANZADO);
        }
        private async Task <ResultadoLanzandoHechizo> get_Lanzar_Hechizo_Simple(HechizoPelea hechizo)
        {
            if (_fight.get_Puede_Lanzar_hechizo(hechizo.id) != FallosLanzandoHechizo.NONE)
            {
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }

            Luchadores enemigo = get_Objetivo_Mas_Cercano(hechizo);

            if (enemigo != null)
            {
                FallosLanzandoHechizo resultado = _fight.get_Puede_Lanzar_hechizo(hechizo.id, _fight.jugador_luchador.celda, enemigo.celda, _map);

                if (resultado == FallosLanzandoHechizo.NONE)
                {
                    await _fight.get_Lanzar_Hechizo(hechizo.id, enemigo.celda.id);

                    return(ResultadoLanzandoHechizo.LANZADO);
                }

                if (resultado == FallosLanzandoHechizo.NO_ESTA_EN_RANGO)
                {
                    return(await get_Mover_Lanzar_hechizo_Simple(hechizo, enemigo));
                }
            }
            else if (hechizo.focus == HechizoFocus.CELDA_VACIA)
            {
                return(await lanzar_Hechizo_Celda_Vacia(hechizo));
            }

            return(ResultadoLanzandoHechizo.NO_LANZADO);
        }
        private async Task get_Procesar_hechizo()
        {
            if (cuenta?.esta_luchando() == false || configuracion == null)
            {
                return;
            }

            if (hechizo_lanzado_index >= configuracion.hechizos.Count)
            {
                await get_Fin_Turno();

                return;
            }

            HechizoPelea hechizo_actual = configuracion.hechizos[hechizo_lanzado_index];

            if (hechizo_actual.lanzamientos_restantes == 0)
            {
                await get_Procesar_Siguiente_Hechizo(hechizo_actual);

                return;
            }

            ResultadoLanzandoHechizo resultado = await manejador_hechizos.manejador_Hechizos(hechizo_actual);

            switch (resultado)
            {
            case ResultadoLanzandoHechizo.NO_LANZADO:
                await get_Procesar_Siguiente_Hechizo(hechizo_actual);

                if (GlobalConf.mostrar_mensajes_debug)
                {
                    cuenta.logger.log_informacion("DEBUG", $"Hechizo {hechizo_actual.nombre} no lanzado");
                }
                break;

            case ResultadoLanzandoHechizo.LANZADO:
                hechizo_actual.lanzamientos_restantes--;
                esperando_sequencia_fin = true;

                if (GlobalConf.mostrar_mensajes_debug)
                {
                    cuenta.logger.log_informacion("DEBUG", $"Hechizo {hechizo_actual.nombre} lanzado");
                }
                break;

            case ResultadoLanzandoHechizo.MOVIDO:
                esperando_sequencia_fin = true;

                if (GlobalConf.mostrar_mensajes_debug)
                {
                    cuenta.logger.log_informacion("DEBUG", $"El bot se ha desplazado porque no ha podido lanzar {hechizo_actual.nombre} ");
                }
                break;
            }
        }
        private async Task get_Procesar_hechizo()
        {
            if (cuenta?.IsFighting() == false || configuracion == null)
            {
                return;
            }

            if (hechizo_lanzado_index >= configuracion.hechizos.Count)
            {
                await get_Fin_Turno();

                return;
            }

            HechizoPelea hechizo_actual = configuracion.hechizos[hechizo_lanzado_index];

            if (hechizo_actual.lanzamientos_restantes == 0)
            {
                await get_Procesar_Siguiente_Hechizo(hechizo_actual);

                return;
            }

            ResultadoLanzandoHechizo resultado = await manejador_hechizos.manejador_Hechizos(hechizo_actual, pelea.account.capturefight);

            switch (resultado)
            {
            case ResultadoLanzandoHechizo.CAPTURE_LANZADO:
                hechizo_actual = configuracion.hechizos.FirstOrDefault(o => o.id == 413);
                hechizo_actual.lanzamientos_restantes--;
                esperando_sequencia_fin = true;

                break;

            case ResultadoLanzandoHechizo.CAPTURE_NO_LANZADO:
                hechizo_actual = configuracion.hechizos.FirstOrDefault(o => o.id == 413);
                await get_Procesar_Siguiente_Hechizo(hechizo_actual);

                break;

            case ResultadoLanzandoHechizo.NO_LANZADO:
                await get_Procesar_Siguiente_Hechizo(hechizo_actual);

                break;

            case ResultadoLanzandoHechizo.LANZADO:
                hechizo_actual.lanzamientos_restantes--;
                esperando_sequencia_fin = true;
                break;

            case ResultadoLanzandoHechizo.MOVIDO:
                esperando_sequencia_fin = true;
                break;
            }
        }
        private async Task get_Procesar_Siguiente_Hechizo(HechizoPelea hechizo_actual)
        {
            if (cuenta?.IsFighting() == false)
            {
                return;
            }

            hechizo_actual.lanzamientos_restantes = hechizo_actual.lanzamientos_x_turno;
            hechizo_lanzado_index++;

            await get_Procesar_hechizo();
        }
        private async Task get_Procesar_Siguiente_Hechizo(HechizoPelea hechizo_actual)
        {
            if (Account?.IsFighting() == false)
            {
                return;
            }

            hechizo_actual.lanzamientos_restantes = hechizo_actual.lanzamientos_x_turno;
            hechizo_lanzado_index++;

            await Task.Delay(350 + Account.Connection.get_Actual_Ping());

            await get_Procesar_hechizo();
        }
        // Token: 0x060001E4 RID: 484 RVA: 0x0000941C File Offset: 0x0000781C
        private async Task get_Procesar_Siguiente_Hechizo(HechizoPelea hechizo_actual)
        {
            Cuenta cuenta = this.cuenta;
            bool   flag   = cuenta != null && !cuenta.esta_luchando();

            if (!flag)
            {
                hechizo_actual.lanzamientos_restantes = hechizo_actual.lanzamientos_x_turno;
                this.hechizo_lanzado_index++;
                await Task.Delay(100);

                await this.get_Procesar_hechizo();
            }
        }
        private Luchadores get_Objetivo_Mas_Cercano(HechizoPelea hechizo)
        {
            if (hechizo.focus == HechizoFocus.ENCIMA)
            {
                return(_fight.jugador_luchador);
            }

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

            return(hechizo.focus == HechizoFocus.ENEMIGO ? _fight.get_Obtener_Enemigo_Mas_Cercano() : _fight.get_Obtener_Aliado_Mas_Cercano());
        }
示例#11
0
        private async Task get_Procesar_Siguiente_Hechizo(HechizoPelea hechizo_actual)
        {
            if (cuenta?.esta_luchando() == false)
            {
                return;
            }

            hechizo_actual.lanzamientos_restantes = hechizo_actual.lanzamientos_x_turno;
            hechizo_lanzado_index++;

            await Task.Delay(350 + cuenta.conexion.get_Actual_Ping());

            await get_Procesar_hechizo();
        }
示例#12
0
        private void button_bajar_hechizo_Click(object sender, EventArgs e)
        {
            if (listView_hechizos_pelea.FocusedItem == null || listView_hechizos_pelea.FocusedItem.Index == 0)
            {
                return;
            }

            List <HechizoPelea> hechizo  = cuenta.CombatExtensions.configuracion.hechizos;
            HechizoPelea        temporal = hechizo[listView_hechizos_pelea.FocusedItem.Index + 1];

            hechizo[listView_hechizos_pelea.FocusedItem.Index + 1] = hechizo[listView_hechizos_pelea.FocusedItem.Index];
            hechizo[listView_hechizos_pelea.FocusedItem.Index]     = temporal;
            cuenta.CombatExtensions.configuracion.guardar();
            refrescar_Lista_Hechizos();
        }
示例#13
0
        private async Task get_Procesar_Siguiente_Hechizo(HechizoPelea hechizo_actual)
        {
            if (cuenta?.IsFighting() == false)
            {
                return;
            }

            hechizo_actual.lanzamientos_restantes = hechizo_actual.lanzamientos_x_turno;
            hechizo_lanzado_index++;

            var t = new Random().Next(500, 900);

            cuenta.logger.log_informacion($"Fight", $"Waiting for : {t} ms to cast the spell");
            await Task.Delay(t);

            await get_Procesar_hechizo();
        }
        // Token: 0x060001E1 RID: 481 RVA: 0x00009344 File Offset: 0x00007744
        private async Task get_Procesar_hechizo()
        {
            Cuenta cuenta = this.cuenta;
            bool   flag   = (cuenta != null && !cuenta.esta_luchando()) || this.configuracion == null;

            if (!flag)
            {
                bool flag2 = this.hechizo_lanzado_index >= this.configuracion.hechizos.Count;
                if (flag2)
                {
                    await this.get_Fin_Turno();
                }
                else
                {
                    HechizoPelea hechizo_actual = this.configuracion.hechizos[this.hechizo_lanzado_index];
                    if (hechizo_actual.lanzamientos_restantes == 0)
                    {
                        await this.get_Procesar_Siguiente_Hechizo(hechizo_actual);
                    }
                    else
                    {
                        switch (await this.manejador_hechizos.manejador_Hechizos(hechizo_actual))
                        {
                        case ResultadoLanzandoHechizo.LANZADO:
                        {
                            HechizoPelea hechizoPelea = hechizo_actual;
                            hechizoPelea.lanzamientos_restantes -= 1;
                            this.esperando_sequencia_fin         = true;
                            break;
                        }

                        case ResultadoLanzandoHechizo.MOVIDO:
                            this.esperando_sequencia_fin = true;
                            break;

                        case ResultadoLanzandoHechizo.NO_LANZADO:
                            await this.get_Procesar_Siguiente_Hechizo(hechizo_actual);

                            break;
                        }
                    }
                }
            }
        }
示例#15
0
        private async Task get_Procesar_hechizo()
        {
            if (cuenta?.esta_luchando() == false || configuracion == null)
            {
                return;
            }

            if (hechizo_lanzado_index >= configuracion.hechizos.Count)
            {
                await get_Fin_Turno();

                return;
            }

            HechizoPelea hechizo_actual = configuracion.hechizos[hechizo_lanzado_index];

            if (hechizo_actual.lanzamientos_restantes == 0)
            {
                await get_Procesar_Siguiente_Hechizo(hechizo_actual);

                return;
            }

            ResultadoLanzandoHechizo resultado = await manejador_hechizos.manejador_Hechizos(hechizo_actual);

            switch (resultado)
            {
            case ResultadoLanzandoHechizo.NO_LANZADO:
                await get_Procesar_Siguiente_Hechizo(hechizo_actual);

                break;

            case ResultadoLanzandoHechizo.LANZADO:
                hechizo_actual.lanzamientos_restantes--;
                esperando_sequencia_fin = true;
                break;

            case ResultadoLanzandoHechizo.MOVIDO:
                esperando_sequencia_fin = true;
                break;
            }
        }
        // Token: 0x0600019D RID: 413 RVA: 0x000074B0 File Offset: 0x000058B0
        public async Task <ResultadoLanzandoHechizo> manejador_Hechizos(HechizoPelea hechizo)
        {
            bool flag = hechizo.focus == HechizoFocus.CELL_VIDE;
            ResultadoLanzandoHechizo result;

            if (flag)
            {
                ResultadoLanzandoHechizo resultadoLanzandoHechizo = await this.lanzar_Hechizo_Celda_Vacia(hechizo);

                result = resultadoLanzandoHechizo;
            }
            else if (hechizo.metodo_lanzamiento == MetodoLanzamiento.CAC_ET_DISTANCE)
            {
                ResultadoLanzandoHechizo resultadoLanzandoHechizo2 = await this.get_Lanzar_Hechizo_Simple(hechizo);

                result = resultadoLanzandoHechizo2;
            }
            else if (hechizo.metodo_lanzamiento == MetodoLanzamiento.DISTANCE && !this.cuenta.juego.pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo(null))
            {
                ResultadoLanzandoHechizo resultadoLanzandoHechizo3 = await this.get_Lanzar_Hechizo_Simple(hechizo);

                result = resultadoLanzandoHechizo3;
            }
            else if (hechizo.metodo_lanzamiento == MetodoLanzamiento.CAC && this.cuenta.juego.pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo(null))
            {
                ResultadoLanzandoHechizo resultadoLanzandoHechizo4 = await this.get_Lanzar_Hechizo_Simple(hechizo);

                result = resultadoLanzandoHechizo4;
            }
            else if (hechizo.metodo_lanzamiento == MetodoLanzamiento.CAC && !this.cuenta.juego.pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo(null))
            {
                ResultadoLanzandoHechizo resultadoLanzandoHechizo5 = await this.get_Mover_Lanzar_hechizo_Simple(hechizo, this.get_Objetivo_Mas_Cercano(hechizo));

                result = resultadoLanzandoHechizo5;
            }
            else
            {
                result = ResultadoLanzandoHechizo.NO_LANZADO;
            }
            return(result);
        }
        // Token: 0x060001A0 RID: 416 RVA: 0x000075A8 File Offset: 0x000059A8
        private async Task <ResultadoLanzandoHechizo> lanzar_Hechizo_Celda_Vacia(HechizoPelea hechizo_pelea)
        {
            bool flag = this.pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id) > FallosLanzandoHechizo.NINGUNO;
            ResultadoLanzandoHechizo result;

            if (flag)
            {
                result = ResultadoLanzandoHechizo.NO_LANZADO;
            }
            else
            {
                bool flag2 = hechizo_pelea.focus == HechizoFocus.CELL_VIDE && this.pelea.get_Cuerpo_A_Cuerpo_Enemigo(null).Count <Luchadores>() == 4;
                if (flag2)
                {
                    result = ResultadoLanzandoHechizo.NO_LANZADO;
                }
                else
                {
                    Hechizo      hechizo            = this.cuenta.juego.personaje.get_Hechizo(hechizo_pelea.id);
                    HechizoStats datos_hechizo      = hechizo.get_Stats();
                    List <short> rangos_disponibles = this.pelea.get_Rango_hechizo(this.pelea.jugador_luchador.celda, datos_hechizo, this.mapa);
                    foreach (short rango in rangos_disponibles)
                    {
                        bool flag3 = this.pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id, this.pelea.jugador_luchador.celda, this.mapa.get_Celda_Id(rango), this.mapa) == FallosLanzandoHechizo.NINGUNO;
                        if (flag3)
                        {
                            bool flag4 = hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC || (hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC_ET_DISTANCE && this.mapa.get_Celda_Id(rango).get_Distancia_Entre_Dos_Casillas(this.pelea.jugador_luchador.celda) != 1);
                            if (!flag4)
                            {
                                await this.pelea.get_Lanzar_Hechizo(hechizo_pelea.id, rango);

                                return(ResultadoLanzandoHechizo.LANZADO);
                            }
                        }
                    }
                    List <short> .Enumerator enumerator = default(List <short> .Enumerator);
                    result = ResultadoLanzandoHechizo.NO_LANZADO;
                }
            }
            return(result);
        }
示例#18
0
        private Luchadores get_Objetivo_Mas_Cercano(HechizoPelea hechizo)
        {
            Spell Spell = cuenta.game.character.get_Hechizo(hechizo.id);



            SpellStats SpellStats = Spell.get_Stats();
            int        range      = SpellStats.alcanze_maximo;

            if (hechizo.focus == HechizoFocus.ENCIMA)
            {
                return(pelea.jugador_luchador);
            }

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

            return(hechizo.focus == HechizoFocus.ENEMIGO ? pelea.get_Obtener_Enemigo_Mas_Cercano(range) : pelea.get_Obtener_Aliado_Mas_Cercano());
        }
        // Token: 0x0600019E RID: 414 RVA: 0x00007500 File Offset: 0x00005900
        private async Task <ResultadoLanzandoHechizo> get_Lanzar_Hechizo_Simple(HechizoPelea hechizo)
        {
            bool flag = this.pelea.get_Puede_Lanzar_hechizo(hechizo.id) > FallosLanzandoHechizo.NINGUNO;
            ResultadoLanzandoHechizo result;

            if (flag)
            {
                result = ResultadoLanzandoHechizo.NO_LANZADO;
            }
            else
            {
                Luchadores enemigo = this.get_Objetivo_Mas_Cercano(hechizo);
                bool       flag2   = enemigo != null;
                if (flag2)
                {
                    FallosLanzandoHechizo resultado = this.pelea.get_Puede_Lanzar_hechizo(hechizo.id, this.pelea.jugador_luchador.celda, enemigo.celda, this.mapa);
                    bool flag3 = resultado == FallosLanzandoHechizo.NINGUNO;
                    if (flag3)
                    {
                        this.cuenta.logger.log_Fight("COMBAT", "Lancement du sort " + hechizo.nombre + " ...");
                        await this.pelea.get_Lanzar_Hechizo(hechizo.id, enemigo.celda.id);

                        return(ResultadoLanzandoHechizo.LANZADO);
                    }
                    if (resultado == FallosLanzandoHechizo.NO_ESTA_EN_RANGO)
                    {
                        this.cuenta.logger.log_Fight("COMBAT", "Lancement du sort " + hechizo.nombre + " ...");
                        return(await this.get_Mover_Lanzar_hechizo_Simple(hechizo, enemigo));
                    }
                }
                else if (hechizo.focus == HechizoFocus.CELL_VIDE)
                {
                    this.cuenta.logger.log_Fight("COMBAT", "Lancement du sort " + hechizo.nombre + " ...");
                    return(await this.lanzar_Hechizo_Celda_Vacia(hechizo));
                }
                result = ResultadoLanzandoHechizo.NO_LANZADO;
            }
            return(result);
        }
        // Token: 0x060001A1 RID: 417 RVA: 0x000075F8 File Offset: 0x000059F8
        private Luchadores get_Objetivo_Mas_Cercano(HechizoPelea hechizo)
        {
            bool       flag = hechizo.focus == HechizoFocus.SOIS_MEME;
            Luchadores result;

            if (flag)
            {
                result = this.pelea.jugador_luchador;
            }
            else
            {
                bool flag2 = hechizo.focus == HechizoFocus.CELL_VIDE;
                if (flag2)
                {
                    result = null;
                }
                else
                {
                    result = ((hechizo.focus == HechizoFocus.ENNEMIE) ? this.pelea.get_Obtener_Enemigo_Mas_Cercano() : this.pelea.get_Obtener_Aliado_Mas_Cercano());
                }
            }
            return(result);
        }
        // Token: 0x0600019F RID: 415 RVA: 0x00007550 File Offset: 0x00005950
        private async Task <ResultadoLanzandoHechizo> get_Mover_Lanzar_hechizo_Simple(HechizoPelea hechizo_pelea, Luchadores enemigo)
        {
            KeyValuePair <short, MovimientoNodo>?nodo = null;
            int pm_utilizados = 99;

            foreach (KeyValuePair <short, MovimientoNodo> movimiento in PeleasPathfinder.get_Celdas_Accesibles(this.pelea, this.mapa, this.pelea.jugador_luchador.celda))
            {
                bool flag = !movimiento.Value.alcanzable;
                if (!flag)
                {
                    bool flag2 = hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC && !this.pelea.esta_Cuerpo_A_Cuerpo_Con_Aliado(this.mapa.get_Celda_Id(movimiento.Key));
                    if (!flag2)
                    {
                        bool flag3 = this.pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id, this.mapa.get_Celda_Id(movimiento.Key), enemigo.celda, this.mapa) > FallosLanzandoHechizo.NINGUNO;
                        if (!flag3)
                        {
                            bool flag4 = movimiento.Value.camino.celdas_accesibles.Count <= pm_utilizados;
                            if (flag4)
                            {
                                nodo          = new KeyValuePair <short, MovimientoNodo>?(movimiento);
                                pm_utilizados = movimiento.Value.camino.celdas_accesibles.Count;
                            }
                            movimiento = default(KeyValuePair <short, MovimientoNodo>);
                        }
                    }
                }
            }
            Dictionary <short, MovimientoNodo> .Enumerator enumerator = default(Dictionary <short, MovimientoNodo> .Enumerator);
            bool flag5 = nodo != null;
            ResultadoLanzandoHechizo result;

            if (flag5)
            {
                await this.cuenta.juego.manejador.movimientos.get_Mover_Celda_Pelea(nodo);

                result = ResultadoLanzandoHechizo.MOVIDO;
            }
            else
            {
                result = ResultadoLanzandoHechizo.NO_LANZADO;
            }
            return(result);
        }
        private async Task <ResultadoLanzandoHechizo> get_Mover_Lanzar_hechizo_Simple(HechizoPelea hechizo_pelea, Luchadores enemigo)
        {
            KeyValuePair <short, MovimientoNodo>?nodo = null;
            int pm_utilizados = 99;

            foreach (KeyValuePair <short, MovimientoNodo> movimiento in PeleasPathfinder.get_Celdas_Accesibles(_fight, _map, _fight.jugador_luchador.celda))
            {
                if (!movimiento.Value.alcanzable)
                {
                    continue;
                }

                if (hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC && !_fight.esta_Cuerpo_A_Cuerpo_Con_Aliado(_map.get_Celda_Id(movimiento.Key)))
                {
                    continue;
                }

                if (_fight.get_Puede_Lanzar_hechizo(hechizo_pelea.id, _map.get_Celda_Id(movimiento.Key), enemigo.celda, _map) != FallosLanzandoHechizo.NONE)
                {
                    continue;
                }

                if (movimiento.Value.camino.celdas_accesibles.Count <= pm_utilizados)
                {
                    nodo          = movimiento;
                    pm_utilizados = movimiento.Value.camino.celdas_accesibles.Count;
                }
            }

            if (nodo != null)
            {
                await cuenta.Game.Handler.movimientos.get_Mover_Celda_Pelea(nodo);

                return(ResultadoLanzandoHechizo.MOVIDO);
            }

            return(ResultadoLanzandoHechizo.NO_LANZADO);
        }
示例#23
0
        private async Task <ResultadoLanzandoHechizo> get_Lanzar_Hechizo_Simple(HechizoPelea hechizo, bool capturer = false)
        {
            if (pelea.get_Puede_Lanzar_hechizo(hechizo.id) != FallosLanzandoHechizo.NINGUNO)
            {
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }



            /* gestion sort capture */
            bool lancer_capture = is_Spell_capture_lancable();

            if (cuenta.isGroupLeader == true)
            {
                if (cuenta.needToCapture == true && cuenta.game.fight.jugador_luchador.esta_vivo == false)
                {
                    capturer = false;
                }
            }
            if (cuenta.hasGroup == true)
            {
                foreach (var membre in cuenta.group.members)
                {
                    if (membre.needToCapture == true && membre.game.fight.jugador_luchador.esta_vivo == false)
                    {
                        capturer = false;
                    }
                }
            }

            if (lancer_capture == true && cuenta.needToCapture == false && cuenta.capturelance == false && capturer == true && cuenta.capturefight == true)
            {
                cuenta.Logger.LogInfo($"Fight", $"CAPTURE INFO : Je lance pas de sort, la capture doit étre lancé par un autre");
                return(ResultadoLanzandoHechizo.NO_LANZADO);
            }
            if (lancer_capture == true && cuenta.needToCapture == true && capturer == true && cuenta.capturelance == false && cuenta.capturefight == true)
            {
                hechizo = cuenta.fightExtension.configuracion.hechizos.FirstOrDefault(o => o.id == 413);
                Luchadores            lanceur_capture = get_Objetivo_Mas_Cercano(hechizo);
                FallosLanzandoHechizo result          = pelea.get_Puede_Lanzar_hechizo(hechizo.id, pelea.jugador_luchador.celda, lanceur_capture.celda, mapa);

                if (result == FallosLanzandoHechizo.NINGUNO)
                {
                    cuenta.Logger.LogInfo($"Fight", $"CAPTURE INFO : Je lance la capture");
                    await pelea.get_Lanzar_Hechizo(hechizo.id, lanceur_capture.celda.cellId);

                    if (cuenta.hasGroup == true)
                    {
                        cuenta.group.lider.capturelance = true;
                        foreach (var item in cuenta.group.members)
                        {
                            item.capturelance = true;
                        }
                    }
                    else
                    {
                        cuenta.capturelance = true;
                    }
                    return(ResultadoLanzandoHechizo.CAPTURE_LANZADO);
                }
                else
                {
                    cuenta.Logger.LogInfo($"Fight", $"CAPTURE INFO : Je doit lancer la capture mais pas possible " + result);
                    return(ResultadoLanzandoHechizo.CAPTURE_NO_LANZADO);
                }
            }
            else if (lancer_capture == false && hechizo.id == 413 && cuenta.needToCapture == true && capturer == true && cuenta.capturelance == false && cuenta.capturefight == true)
            {
                cuenta.Logger.LogInfo($"Fight", $"CAPTURE INFO : Pas le moment pour lancer la capture");
                return(ResultadoLanzandoHechizo.CAPTURE_NO_LANZADO);
            }

            Luchadores enemigo = get_Objetivo_Mas_Cercano(hechizo);


            if (enemigo != null)
            {
                FallosLanzandoHechizo resultado = pelea.get_Puede_Lanzar_hechizo(hechizo.id, pelea.jugador_luchador.celda, enemigo.celda, mapa);

                if (resultado == FallosLanzandoHechizo.NINGUNO)
                {
                    await pelea.get_Lanzar_Hechizo(hechizo.id, enemigo.celda.cellId);

                    return(ResultadoLanzandoHechizo.LANZADO);
                }

                if (resultado == FallosLanzandoHechizo.NO_ESTA_EN_RANGO)
                {
                    return(await get_Mover_Lanzar_hechizo_Simple(hechizo, enemigo));
                }
            }
            else if (hechizo.focus == HechizoFocus.CELDA_VACIA)
            {
                return(await lanzar_Hechizo_Celda_Vacia(hechizo));
            }

            return(ResultadoLanzandoHechizo.NO_LANZADO);
        }