// 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); }
// Token: 0x060001E6 RID: 486 RVA: 0x000094B4 File Offset: 0x000078B4 public async Task get_Mover(bool cercano, Luchadores enemigo) { KeyValuePair <short, MovimientoNodo>?nodo = null; Mapa mapa = this.cuenta.juego.mapa; int distancia = -1; int distancia_total = this.Get_Total_Distancia_Enemigo(this.pelea.jugador_luchador.celda); foreach (KeyValuePair <short, MovimientoNodo> kvp in PeleasPathfinder.get_Celdas_Accesibles(this.pelea, mapa, this.pelea.jugador_luchador.celda)) { bool flag = !kvp.Value.alcanzable; if (!flag) { int temporal_distancia = this.Get_Total_Distancia_Enemigo(mapa.get_Celda_Id(kvp.Key)); bool flag2 = (cercano && temporal_distancia <= distancia_total) || (!cercano && temporal_distancia >= distancia_total); if (flag2) { if (cercano) { nodo = new KeyValuePair <short, MovimientoNodo>?(kvp); distancia_total = temporal_distancia; } else { bool flag3 = kvp.Value.camino.celdas_accesibles.Count >= distancia; if (flag3) { nodo = new KeyValuePair <short, MovimientoNodo>?(kvp); distancia_total = temporal_distancia; distancia = kvp.Value.camino.celdas_accesibles.Count; } } } kvp = default(KeyValuePair <short, MovimientoNodo>); } } Dictionary <short, MovimientoNodo> .Enumerator enumerator = default(Dictionary <short, MovimientoNodo> .Enumerator); bool flag4 = nodo != null; if (flag4) { await this.cuenta.juego.manejador.movimientos.get_Mover_Celda_Pelea(nodo); } }
public async Task get_Mover(bool cercano, Luchadores enemigo) { KeyValuePair <short, MovimientoNodo>?nodo = null; Mapa mapa = cuenta.juego.mapa; int distancia = -1; int distancia_total = Get_Total_Distancia_Enemigo(pelea.jugador_luchador.celda); foreach (KeyValuePair <short, MovimientoNodo> kvp in PeleasPathfinder.get_Celdas_Accesibles(pelea, mapa, pelea.jugador_luchador.celda)) { if (!kvp.Value.alcanzable) { continue; } int temporal_distancia = Get_Total_Distancia_Enemigo(mapa.get_Celda_Id(kvp.Key)); if ((cercano && temporal_distancia <= distancia_total) || (!cercano && temporal_distancia >= distancia_total)) { if (cercano) { nodo = kvp; distancia_total = temporal_distancia; } else if (kvp.Value.camino.celdas_accesibles.Count >= distancia) { nodo = kvp; distancia_total = temporal_distancia; distancia = kvp.Value.camino.celdas_accesibles.Count; } } } if (nodo != null) { await cuenta.juego.manejador.movimientos.get_Mover_Celda_Pelea(nodo); } }
private async Task <ResultadoLanzandoHechizo> get_Mover_Lanzar_hechizo_Simple(PeleaHechizos hechizo_pelea, Luchadores enemigo) { KeyValuePair <short, MovimientoNodo>?nodo = null; int pm_utilizados = 99; foreach (KeyValuePair <short, MovimientoNodo> movimiento in PeleasPathfinder.get_Celdas_Accesibles(pelea, mapa, pelea.jugador_luchador.celda)) { if (!movimiento.Value.alcanzable) { continue; } if (hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC && !pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo(mapa.get_Celda_Id(movimiento.Key))) { continue; } if (pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id, mapa.get_Celda_Id(movimiento.Key), enemigo.celda, mapa) != FallosLanzandoHechizo.NINGUNO) { 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.juego.manejador.movimientos.get_Mover_Celda_Pelea(nodo); return(ResultadoLanzandoHechizo.MOVIDO); } return(ResultadoLanzandoHechizo.NO_LANZADO); }
public async Task get_Mover(bool cercano, Luchadores enemigo) { KeyValuePair <short, MovimientoNodo>?nodo = null; int distancia_total = -1; int distancia = -1; distancia_total = Get_Total_Distancia_Enemigo(cuenta.pelea.jugador_luchador.celda_id); foreach (KeyValuePair <short, MovimientoNodo> kvp in PeleasPathfinder.get_Celdas_Accesibles(cuenta.pelea, cuenta.personaje.mapa, cuenta.pelea.jugador_luchador.celda_id)) { if (!kvp.Value.alcanzable) { continue; } int tempTotalDistances = Get_Total_Distancia_Enemigo(kvp.Key); if ((cercano && tempTotalDistances <= distancia_total) || (!cercano && tempTotalDistances >= distancia_total)) { if (cercano) { nodo = kvp; distancia_total = tempTotalDistances; } else if (kvp.Value.camino.celdas_accesibles.Count >= distancia) { nodo = kvp; distancia_total = tempTotalDistances; distancia = kvp.Value.camino.celdas_accesibles.Count; } } } if (nodo != null) { await cuenta.personaje.manejador.movimientos.get_Mover_Celda_Pelea(nodo); } }
private async Task <ResultadoLanzandoHechizo> lanzar_Hechizo_AOE(PeleaHechizos hechizo_pelea) { if (hechizo_pelea.focus == HechizoFocus.ALIADO || hechizo_pelea.focus == HechizoFocus.CELDA_VACIA) { return(ResultadoLanzandoHechizo.NO_LANZADO); } if (pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id) != FallosLanzandoHechizo.NINGUNO) { return(ResultadoLanzandoHechizo.NO_LANZADO); } Hechizo hechizo = cuenta.juego.personaje.get_Hechizo(hechizo_pelea.id); HechizoStats hechizo_stats = hechizo.get_Stats(); List <NodoRango> entradas = new List <NodoRango>(); NodoRango entrada; //Celda actual del jugador entrada = get_Nodo_Rango(pelea.jugador_luchador.celda, null, hechizo_pelea, hechizo_stats); if (entrada.enemigos_atacos_en_celda.Count > 0) { entradas.Add(entrada); } foreach (KeyValuePair <short, MovimientoNodo> kvp in PeleasPathfinder.get_Celdas_Accesibles(pelea, mapa, pelea.jugador_luchador.celda)) { if (!kvp.Value.alcanzable) { continue; } entrada = get_Nodo_Rango(mapa.get_Celda_Id(kvp.Key), kvp.Value, hechizo_pelea, hechizo_stats); if (entrada.enemigos_atacos_en_celda.Count > 0) { entradas.Add(entrada); } } short celda_id = -1; short desde_celda_id = -1; KeyValuePair <short, MovimientoNodo>?node = null; byte enemigos_atacados = 0; int pm_utilizados = 99; foreach (NodoRango nodo in entradas) { foreach (KeyValuePair <short, byte> kvp in nodo.enemigos_atacos_en_celda) { if (hechizo_pelea.metodo_lanzamiento == MetodoLanzamiento.CAC && !pelea.esta_Cuerpo_A_Cuerpo_Con_Enemigo(nodo.celda)) { continue; } if (pelea.get_Puede_Lanzar_hechizo(hechizo_pelea.id, nodo.celda, mapa.get_Celda_Id(kvp.Key), mapa) != FallosLanzandoHechizo.NINGUNO) { continue; } if (kvp.Value >= enemigos_atacados) { if (kvp.Value > enemigos_atacados || (kvp.Value == enemigos_atacados && nodo.pm_utilizados <= pm_utilizados)) { enemigos_atacados = kvp.Value; celda_id = kvp.Key; desde_celda_id = nodo.celda.id; pm_utilizados = nodo.pm_utilizados; if (nodo.nodo != null) { node = new KeyValuePair <short, MovimientoNodo>(desde_celda_id, nodo.nodo); } } } } } if (celda_id != -1) { if (node == null) { if (GlobalConf.mostrar_mensajes_debug) { cuenta.logger.log_informacion("DEBUG", $"Se ha lanzado el hechizo {hechizo.nombre} atacando a {enemigos_atacados} enemigos en la celda {celda_id}"); } await pelea.get_Lanzar_Hechizo(hechizo_pelea.id, celda_id); return(ResultadoLanzandoHechizo.LANZADO); } else { hechizo_para_lanzar = hechizo.id; celda_objetivo = celda_id; enemigos_tocados = enemigos_atacados; await cuenta.juego.manejador.movimientos.get_Mover_Celda_Pelea(node); return(ResultadoLanzandoHechizo.MOVIDO); } } return(ResultadoLanzandoHechizo.NO_LANZADO); }