// Token: 0x06000310 RID: 784 RVA: 0x0000C28C File Offset: 0x0000A68C internal Juego(Cuenta cuenta) { this.servidor = new ServidorJuego(); this.mapa = new Mapa(); this.personaje = new PersonajeJuego(cuenta); this.manejador = new Manejador(cuenta, this.mapa, this.personaje); this.pelea = new Pelea(cuenta); }
internal GameClass(Account prmAccount) { server = new GameServer(); map = new Map(); character = new CharacterClass(prmAccount); manager = new Manejador(prmAccount, map, character); fight = new Pelea(prmAccount); }
internal Juego(Cuenta cuenta) { servidor = new ServidorJuego(); mapa = new Mapa(); personaje = new PersonajeJuego(cuenta); manejador = new Manejador(cuenta, mapa, personaje); pelea = new Pelea(cuenta); }
public Cuenta(CuentaConf _cuenta_configuracion) { cuenta_configuracion = _cuenta_configuracion; servidor_id = cuenta_configuracion.get_Servidor_Id(); logger = new Logger(); pelea = new Pelea(this); pelea_extension = new PeleaExtensiones(this); conexion = new ClienteLogin(IPAddress.Parse(GlobalConf.ip_conexion), GlobalConf.puerto_conexion, this); }
public Cuenta(CuentaConf _cuenta_configuracion) { cuenta_configuracion = _cuenta_configuracion; servidor_id = cuenta_configuracion.get_Servidor_Id(); logger = new Logger(); pelea = new Pelea(this); juego = new Juego(this); pelea_extension = new PeleaExtensiones(this); script = new ManejadorScript(this); conexion = new ClienteTcp(this); }
protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { mapa.Dispose(); personaje.Dispose(); manejador.Dispose(); pelea.Dispose(); servidor.Dispose(); } servidor = null; mapa = null; personaje = null; manejador = null; pelea = null; disposed = true; } }
protected virtual void Dispose(bool disposing) { if (!_disposed) { if (disposing) { map.Dispose(); character.Dispose(); manager.Dispose(); fight.Dispose(); server.Dispose(); } server = null; map = null; character = null; manager = null; fight = null; _disposed = true; } }
// Token: 0x06000314 RID: 788 RVA: 0x0000C370 File Offset: 0x0000A770 protected virtual void Dispose(bool disposing) { bool flag = !this.disposed; if (flag) { if (disposing) { this.mapa.Dispose(); this.personaje.Dispose(); this.manejador.Dispose(); this.pelea.Dispose(); this.servidor.Dispose(); } this.servidor = null; this.mapa = null; this.personaje = null; this.manejador = null; this.pelea = null; this.disposed = true; } }
public async Task get_Movimientos_Personajes(TcpClient cliente, string paquete) { Account cuenta = cliente.account; string[] separador_jugadores = paquete.Substring(3).Split('|'), informaciones; string _loc6, nombre_template, tipo; for (int i = 0; i < separador_jugadores.Length; ++i) { _loc6 = separador_jugadores[i]; if (_loc6.Length != 0) { informaciones = _loc6.Substring(1).Split(';'); if (_loc6[0].Equals('+')) { Cell celda = cuenta.game.map.GetCellFromId(short.Parse(informaciones[0])); Pelea pelea = cuenta.game.fight; int id = int.Parse(informaciones[3]); nombre_template = informaciones[4]; tipo = informaciones[5]; if (tipo.Contains(",")) { tipo = tipo.Split(',')[0]; } switch (int.Parse(tipo)) { case -1: case -2: if (cuenta.accountState == AccountStates.FIGHTING) { int vida = int.Parse(informaciones[12]); byte pa = byte.Parse(informaciones[13]); byte pm = byte.Parse(informaciones[14]); byte equipo = byte.Parse(informaciones[15]); pelea.get_Agregar_Luchador(new Luchadores(id, true, vida, pa, pm, celda, vida, equipo)); } break; case -3: //monstruos string[] templates = nombre_template.Split(','); string[] niveles = informaciones[7].Split(','); Monstruos monstruo = new Monstruos(id, int.Parse(templates[0]), celda, int.Parse(niveles[0])); monstruo.lider_grupo = monstruo; for (int m = 1; m < templates.Length; ++m) { monstruo.moobs_dentro_grupo.Add(new Monstruos(id, int.Parse(templates[m]), celda, int.Parse(niveles[m]))); } cuenta.game.map.entities.TryAdd(id, monstruo); break; case -4: //NPC cuenta.game.map.entities.TryAdd(id, new Npcs(id, int.Parse(nombre_template), celda)); break; case -5: case -6: case -7: case -8: case -9: case -10: break; default: // jugador if (cuenta.accountState != AccountStates.FIGHTING) { if (cuenta.game.character.id != id) { cuenta.game.map.entities.TryAdd(id, new Personajes(id, nombre_template, byte.Parse(informaciones[7].ToString()), celda)); } else { cuenta.game.character.celda = celda; } } else { int vida = int.Parse(informaciones[14]); byte pa = byte.Parse(informaciones[15]); byte pm = byte.Parse(informaciones[16]); byte equipo = byte.Parse(informaciones[24]); pelea.get_Agregar_Luchador(new Luchadores(id, true, vida, pa, pm, celda, vida, equipo)); if (cuenta.game.character.id == id && cuenta.fightExtension.configuracion.posicionamiento != PosicionamientoInicioPelea.INMOVIL) { await Task.Delay(300); /** la posicion es aleatoria pero el paquete GP siempre aparecera primero el team donde esta el pj **/ short celda_posicion = pelea.get_Celda_Mas_Cercana_O_Lejana(cuenta.fightExtension.configuracion.posicionamiento == PosicionamientoInicioPelea.CERCA_DE_ENEMIGOS, pelea.celdas_preparacion); await Task.Delay(300); if (celda_posicion != celda.cellId) { cuenta.connexion.SendPacket("Gp" + celda_posicion, true); } else { cuenta.connexion.SendPacket("GR1"); } } else if (cuenta.game.character.id == id) { await Task.Delay(300); cuenta.connexion.SendPacket("GR1"); //boton listo } } break; } } else if (_loc6[0].Equals('-')) { if (cuenta.accountState != AccountStates.FIGHTING) { int id = int.Parse(_loc6.Substring(1)); cuenta.game.map.entities.TryRemove(id, out Entidad entidad); } } } } }
public async Task get_Iniciar_Accion(TcpClient cliente, string paquete) { string[] separador = paquete.Substring(2).Split(';'); int id_accion = int.Parse(separador[1]); Account cuenta = cliente.account; CharacterClass personaje = cuenta.game.character; if (id_accion > 0) { int id_entidad = int.Parse(separador[2]); byte tipo_gkk_movimiento; Cell celda; Luchadores luchador; Map mapa = cuenta.game.map; Pelea pelea = cuenta.game.fight; switch (id_accion) { case 1: celda = mapa.GetCellFromId(Hash.Get_Cell_From_Hash(separador[3].Substring(separador[3].Length - 2))); if (!cuenta.IsFighting()) { if (id_entidad == personaje.id && celda.cellId > 0 && personaje.celda.cellId != celda.cellId) { tipo_gkk_movimiento = byte.Parse(separador[0]); await cuenta.game.manager.movimientos.evento_Movimiento_Finalizado(celda, tipo_gkk_movimiento, true); } else if (mapa.entities.TryGetValue(id_entidad, out Entidad entidad)) { entidad.celda = celda; if (GlobalConfig.show_debug_messages) { cuenta.logger.log_informacion("DEBUG", "Mouvement détecté d'une entité vers la cellule : " + celda.cellId); } } mapa.GetEntitiesRefreshEvent(); } else { luchador = pelea.get_Luchador_Por_Id(id_entidad); if (luchador != null) { luchador.celda = celda; if (luchador.id == personaje.id) { tipo_gkk_movimiento = byte.Parse(separador[0]); await Task.Delay(400 + (100 * personaje.celda.GetDistanceBetweenCells(celda))); cuenta.connexion.SendPacket("GKK" + tipo_gkk_movimiento); } } } break; case 4: separador = separador[3].Split(','); celda = mapa.GetCellFromId(short.Parse(separador[1])); if (!cuenta.IsFighting() && id_entidad == personaje.id && celda.cellId > 0 && personaje.celda.cellId != celda.cellId) { personaje.celda = celda; await Task.Delay(150); cuenta.connexion.SendPacket("GKK1"); mapa.GetEntitiesRefreshEvent(); cuenta.game.manager.movimientos.movimiento_Actualizado(true); } break; case 5: if (cuenta.IsFighting()) { separador = separador[3].Split(','); luchador = pelea.get_Luchador_Por_Id(int.Parse(separador[0])); if (luchador != null) { luchador.celda = mapa.GetCellFromId(short.Parse(separador[1])); } } break; case 102: if (cuenta.IsFighting()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); byte pa_utilizados = byte.Parse(separador[3].Split(',')[1].Substring(1)); if (luchador != null) { luchador.pa -= pa_utilizados; } } break; case 103: if (cuenta.IsFighting()) { int id_muerto = int.Parse(separador[3]); luchador = pelea.get_Luchador_Por_Id(id_muerto); if (luchador != null) { luchador.esta_vivo = false; } } break; case 129: //movimiento en pelea con exito if (cuenta.IsFighting()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); byte pm_utilizados = byte.Parse(separador[3].Split(',')[1].Substring(1)); if (luchador != null) { luchador.pm -= pm_utilizados; } if (luchador.id == personaje.id) { pelea.get_Movimiento_Exito(true); } } break; case 151: //obstaculos invisibles if (cuenta.IsFighting()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); if (luchador != null && luchador.id == personaje.id) { cuenta.logger.log_Error("INFORMATION", "Il n'est pas possible d'effectuer cette action à cause d'un obstacle invisible."); pelea.get_Hechizo_Lanzado(short.Parse(separador[3]), false); } } break; case 181: //efecto de invocacion (pelea) celda = mapa.GetCellFromId(short.Parse(separador[3].Substring(1))); short id_luchador = short.Parse(separador[6]); short vida = short.Parse(separador[15]); byte pa = byte.Parse(separador[16]); byte pm = byte.Parse(separador[17]); byte equipo = byte.Parse(separador[25]); pelea.get_Agregar_Luchador(new Luchadores(id_luchador, true, vida, pa, pm, celda, vida, equipo, id_entidad)); break; case 302: //fallo critico if (cuenta.IsFighting() && id_entidad == cuenta.game.character.id) { pelea.get_Hechizo_Lanzado(0, false); } break; case 300: //hechizo lanzado con exito if (cuenta.IsFighting() && id_entidad == cuenta.game.character.id) { short celda_id_lanzado = short.Parse(separador[3].Split(',')[1]); pelea.get_Hechizo_Lanzado(celda_id_lanzado, true); } break; case 501: int tiempo_recoleccion = int.Parse(separador[3].Split(',')[1]); celda = mapa.GetCellFromId(short.Parse(separador[3].Split(',')[0])); byte tipo_gkk_recoleccion = byte.Parse(separador[0]); await cuenta.game.manager.recoleccion.evento_Recoleccion_Iniciada(id_entidad, tiempo_recoleccion, celda.cellId, tipo_gkk_recoleccion); break; case 900: cuenta.connexion.SendPacket("GA902" + id_entidad, true); cuenta.logger.log_informacion("INFORMATION", "Le défi avec le personnage ID : " + id_entidad + " est annulée"); break; } } }
public override string Contraatacar(Pelea pelea) { //Hacer algo con el contexto return "Patada"; }
public async Task get_Iniciar_Accion(ClienteTcp cliente, string paquete) { string[] separador = paquete.Substring(2).Split(';'); int id_accion = int.Parse(separador[1]); Cuenta cuenta = cliente.cuenta; PersonajeJuego personaje = cuenta.juego.personaje; if (id_accion > 0) { int id_entidad = int.Parse(separador[2]); byte tipo_gkk_movimiento; Celda celda; Luchadores luchador; Mapa mapa = cuenta.juego.mapa; Pelea pelea = cuenta.juego.pelea; switch (id_accion) { case 1: celda = mapa.get_Celda_Id(Hash.get_Celda_Id_Desde_hash(separador[3].Substring(separador[3].Length - 2))); if (!cuenta.esta_luchando()) { if (id_entidad == personaje.id && celda.id > 0 && personaje.celda.id != celda.id) { tipo_gkk_movimiento = byte.Parse(separador[0]); await cuenta.juego.manejador.movimientos.evento_Movimiento_Finalizado(celda, tipo_gkk_movimiento, true); } else if (mapa.entidades.TryGetValue(id_entidad, out Entidad entidad)) { entidad.celda = celda; if (GlobalConf.mostrar_mensajes_debug) { cuenta.logger.log_informacion("DEBUG", "movimiento détecté d'une entité vers la cellule : " + celda.id); } } mapa.evento_Entidad_Actualizada(); } else { luchador = pelea.get_Luchador_Por_Id(id_entidad); if (luchador != null) { luchador.celda = celda; if (luchador.id == personaje.id) { tipo_gkk_movimiento = byte.Parse(separador[0]); await Task.Delay(400 + (100 * personaje.celda.get_Distancia_Entre_Dos_Casillas(celda))); cuenta.conexion.enviar_Paquete("GKK" + tipo_gkk_movimiento); } } } break; case 4: separador = separador[3].Split(','); celda = mapa.get_Celda_Id(short.Parse(separador[1])); if (!cuenta.esta_luchando() && id_entidad == personaje.id && celda.id > 0 && personaje.celda.id != celda.id) { personaje.celda = celda; await Task.Delay(150); cuenta.conexion.enviar_Paquete("GKK1"); mapa.evento_Entidad_Actualizada(); cuenta.juego.manejador.movimientos.movimiento_Actualizado(true); } break; case 5: if (cuenta.esta_luchando()) { separador = separador[3].Split(','); luchador = pelea.get_Luchador_Por_Id(int.Parse(separador[0])); if (luchador != null) { luchador.celda = mapa.get_Celda_Id(short.Parse(separador[1])); } } break; case 102: if (cuenta.esta_luchando()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); byte pa_utilizados = byte.Parse(separador[3].Split(',')[1].Substring(1)); if (luchador != null) { luchador.pa -= pa_utilizados; } } break; case 103: if (cuenta.esta_luchando()) { int id_muerto = int.Parse(separador[3]); luchador = pelea.get_Luchador_Por_Id(id_muerto); if (luchador != null) { luchador.esta_vivo = false; } } break; case 129: //movimiento en pelea con exito if (cuenta.esta_luchando()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); byte pm_utilizados = byte.Parse(separador[3].Split(',')[1].Substring(1)); if (luchador != null) { luchador.pm -= pm_utilizados; } if (luchador.id == personaje.id) { pelea.get_Movimiento_Exito(true); } } break; case 151: //obstaculos invisibles if (cuenta.esta_luchando()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); if (luchador != null && luchador.id == personaje.id) { cuenta.logger.log_Error("INFORMATION", "Il n'est pas possible d'effectuer cette action à cause d'un obstacle invisible."); pelea.get_Hechizo_Lanzado(short.Parse(separador[3]), false); } } break; case 181: //efecto de invocacion (pelea) celda = mapa.get_Celda_Id(short.Parse(separador[3].Substring(1))); short id_luchador = short.Parse(separador[6]); short vida = short.Parse(separador[15]); byte pa = byte.Parse(separador[16]); byte pm = byte.Parse(separador[17]); byte equipo = byte.Parse(separador[25]); pelea.get_Agregar_Luchador(new Luchadores(id_luchador, true, vida, pa, pm, celda, vida, equipo, id_entidad)); break; case 302: //fallo critico if (cuenta.esta_luchando() && id_entidad == cuenta.juego.personaje.id) { pelea.get_Hechizo_Lanzado(0, false); } break; case 300: //hechizo lanzado con exito if (cuenta.esta_luchando() && id_entidad == cuenta.juego.personaje.id) { short celda_id_lanzado = short.Parse(separador[3].Split(',')[1]); pelea.get_Hechizo_Lanzado(celda_id_lanzado, true); } break; case 501: int tiempo_recoleccion = int.Parse(separador[3].Split(',')[1]); celda = mapa.get_Celda_Id(short.Parse(separador[3].Split(',')[0])); byte tipo_gkk_recoleccion = byte.Parse(separador[0]); await cuenta.juego.manejador.recoleccion.evento_Recoleccion_Iniciada(id_entidad, tiempo_recoleccion, celda.id, tipo_gkk_recoleccion); break; case 900: cuenta.conexion.enviar_Paquete("GA902" + id_entidad, true); cuenta.logger.log_informacion("INFORMATION", "Le défi avec le personnage ID : " + id_entidad + " est annulée"); break; } } }
public async Task get_Movimientos_Personajes(ClienteTcp cliente, string paquete) { Cuenta cuenta = cliente.cuenta; string[] separador_jugadores = paquete.Substring(3).Split(new char[] { '|' }); int num; for (int i = 0; i < separador_jugadores.Length; i = num) { string _loc6 = separador_jugadores[i]; bool flag = _loc6.Length != 0; if (flag) { string[] informaciones = _loc6.Substring(1).Split(new char[] { ';' }); bool flag2 = _loc6[0].Equals('+'); if (flag2) { Celda celda = cuenta.juego.mapa.get_Celda_Id(short.Parse(informaciones[0])); Pelea pelea = cuenta.juego.pelea; int id = int.Parse(informaciones[3]); string nombre_template = informaciones[4]; string tipo = informaciones[5]; bool flag3 = tipo.Contains(","); if (flag3) { tipo = tipo.Split(new char[] { ',' })[0]; } string[] templates; string[] niveles; Monstruos monstruo; switch (int.Parse(tipo)) { case -10: case -9: case -8: case -7: case -6: case -5: break; case -4: cuenta.juego.mapa.entidades.TryAdd(id, new Npcs(id, int.Parse(nombre_template), celda)); break; case -3: templates = nombre_template.Split(new char[] { ',' }); niveles = informaciones[7].Split(new char[] { ',' }); monstruo = new Monstruos(id, int.Parse(templates[0]), celda, int.Parse(niveles[0])); monstruo.lider_grupo = monstruo; for (int j = 1; j < templates.Length; j = num) { monstruo.moobs_dentro_grupo.Add(new Monstruos(id, int.Parse(templates[j]), celda, int.Parse(niveles[j]))); num = j + 1; } cuenta.juego.mapa.entidades.TryAdd(id, monstruo); break; case -2: case -1: { bool flag4 = cuenta.Estado_Cuenta == EstadoCuenta.LUCHANDO; if (flag4) { int vida = int.Parse(informaciones[12]); byte pa = byte.Parse(informaciones[13]); byte pm = byte.Parse(informaciones[14]); byte equipo = byte.Parse(informaciones[15]); pelea.get_Agregar_Luchador(new Luchadores(id, true, vida, pa, pm, celda, vida, equipo)); } break; } default: { bool flag5 = cuenta.Estado_Cuenta != EstadoCuenta.LUCHANDO; if (flag5) { bool flag6 = cuenta.juego.personaje.id != id; if (flag6) { cuenta.juego.mapa.entidades.TryAdd(id, new Personajes(id, nombre_template, byte.Parse(informaciones[7].ToString()), celda)); } else { cuenta.juego.personaje.celda = celda; } } else { int vida2 = int.Parse(informaciones[14]); byte pa2 = byte.Parse(informaciones[15]); byte pm2 = byte.Parse(informaciones[16]); byte equipo2 = byte.Parse(informaciones[24]); pelea.get_Agregar_Luchador(new Luchadores(id, true, vida2, pa2, pm2, celda, vida2, equipo2)); bool flag7 = cuenta.juego.personaje.id == id && cuenta.pelea_extension.configuracion.posicionamiento != PosicionamientoInicioPelea.INMOVIL; if (flag7) { await Task.Delay(300); short celda_posicion = pelea.get_Celda_Mas_Cercana_O_Lejana(cuenta.pelea_extension.configuracion.posicionamiento == PosicionamientoInicioPelea.CERCA_DE_ENEMIGOS, pelea.celdas_preparacion); if (celda_posicion != celda.id) { cuenta.conexion.enviar_Paquete("Gp" + celda_posicion.ToString(), true); } else { cuenta.conexion.enviar_Paquete("GR1", false); } } else if (cuenta.juego.personaje.id == id) { await Task.Delay(300); cuenta.conexion.enviar_Paquete("GR1", false); } } break; } } templates = null; niveles = null; monstruo = null; celda = null; pelea = null; } else if (_loc6[0].Equals('-')) { if (cuenta.Estado_Cuenta != EstadoCuenta.LUCHANDO) { int id2 = int.Parse(_loc6.Substring(1)); Entidad entidad; cuenta.juego.mapa.entidades.TryRemove(id2, out entidad); entidad = null; } } } num = i + 1; } }
public static Dictionary <short, MovimientoNodo> get_Celdas_Accesibles(Pelea pelea, Mapa mapa, short celda_actual) { Dictionary <short, MovimientoNodo> celdas = new Dictionary <short, MovimientoNodo>(); if (pelea.jugador_luchador.pm <= 0) { return(celdas); } Celda[] cuadricula = mapa.celdas; short maximos_pm = pelea.jugador_luchador.pm; List <NodoPelea> celdas_permitidas = new List <NodoPelea>(); Dictionary <short, NodoPelea> celdas_prohibidas = new Dictionary <short, NodoPelea>(); NodoPelea nodo = new NodoPelea(celda_actual, maximos_pm, pelea.jugador_luchador.pa, 1); celdas_permitidas.Add(nodo); celdas_prohibidas[celda_actual] = nodo; while (celdas_permitidas.Count > 0) { NodoPelea actual = celdas_permitidas.Last(); celdas_permitidas.Remove(actual); Celda nodo_celda = cuadricula[actual.celda_id]; List <Celda> adyecentes = get_Celdas_Adyecentes(nodo_celda, cuadricula); int i = 0; while (i < adyecentes.Count) { Luchadores placador = pelea.get_Luchadores.FirstOrDefault(f => f.celda_id == adyecentes[i]?.id); if (adyecentes[i] != null && placador == null) { i++; continue; } adyecentes.RemoveAt(i); } int pm_disponibles = actual.pm_disponible - 1; int pa_disponibles = actual.pa_disponible; int distancia = actual.distancia + 1; bool accesible = pm_disponibles >= 0; for (i = 0; i < adyecentes.Count; i++) { if (celdas_prohibidas.ContainsKey(adyecentes[i].id)) { NodoPelea anterior = celdas_prohibidas[adyecentes[i].id]; if (anterior.pm_disponible > pm_disponibles) { continue; } if (anterior.pm_disponible == pm_disponibles && anterior.pm_disponible >= pa_disponibles) { continue; } } if (!cuadricula[adyecentes[i].id].es_Caminable()) { continue; } celdas[adyecentes[i].id] = new MovimientoNodo(nodo_celda.id, accesible); nodo = new NodoPelea(adyecentes[i].id, pm_disponibles, pa_disponibles, distancia); celdas_prohibidas[adyecentes[i].id] = nodo; if (actual.distancia < maximos_pm) { celdas_permitidas.Add(nodo); } } } foreach (short celda in celdas.Keys) { celdas[celda].camino = get_Path_Pelea(celda_actual, celda, celdas); } return(celdas); }
// Token: 0x060002A6 RID: 678 RVA: 0x0000B164 File Offset: 0x00009564 public static Dictionary <short, MovimientoNodo> get_Celdas_Accesibles(Pelea pelea, Mapa mapa, Celda celda_actual) { Dictionary <short, MovimientoNodo> dictionary = new Dictionary <short, MovimientoNodo>(); bool flag = pelea.jugador_luchador.pm <= 0; Dictionary <short, MovimientoNodo> result; if (flag) { result = dictionary; } else { short pm = (short)pelea.jugador_luchador.pm; List <NodoPelea> list = new List <NodoPelea>(); Dictionary <short, NodoPelea> dictionary2 = new Dictionary <short, NodoPelea>(); NodoPelea nodoPelea = new NodoPelea(celda_actual, (int)pm, (int)pelea.jugador_luchador.pa, 1); list.Add(nodoPelea); dictionary2[celda_actual.id] = nodoPelea; while (list.Count > 0) { NodoPelea nodoPelea2 = list.Last <NodoPelea>(); list.Remove(nodoPelea2); Celda celda = nodoPelea2.celda; List <Celda> adyecentes = PeleasPathfinder.get_Celdas_Adyecentes(celda, mapa.celdas); int i = 0; Func <Luchadores, bool> < > 9__0; while (i < adyecentes.Count) { IEnumerable <Luchadores> get_Luchadores = pelea.get_Luchadores; Func <Luchadores, bool> predicate; if ((predicate = < > 9__0) == null) { predicate = (< > 9__0 = delegate(Luchadores f) { int id = (int)f.celda.id; Celda celda2 = adyecentes[i]; short?num3 = (celda2 != null) ? new short?(celda2.id) : null; int?num4 = (num3 != null) ? new int?((int)num3.GetValueOrDefault()) : null; return(id == num4.GetValueOrDefault() & num4 != null); }); } Luchadores luchadores = get_Luchadores.FirstOrDefault(predicate); bool flag2 = adyecentes[i] != null && luchadores == null; if (flag2) { int j = i; i = j + 1; } else { adyecentes.RemoveAt(i); } } int num = nodoPelea2.pm_disponible - 1; int pa_disponible = nodoPelea2.pa_disponible; int distancia = nodoPelea2.distancia + 1; bool alcanzable = num >= 0; i = 0; while (i < adyecentes.Count) { bool flag3 = dictionary2.ContainsKey(adyecentes[i].id); if (!flag3) { goto IL_20C; } NodoPelea nodoPelea3 = dictionary2[adyecentes[i].id]; bool flag4 = nodoPelea3.pm_disponible > num; if (!flag4) { bool flag5 = nodoPelea3.pm_disponible == num && nodoPelea3.pm_disponible >= pa_disponible; if (!flag5) { goto IL_20C; } } IL_2BA: int j = i; i = j + 1; continue; IL_20C: bool flag6 = !adyecentes[i].es_Caminable(); if (flag6) { goto IL_2BA; } dictionary[adyecentes[i].id] = new MovimientoNodo(celda.id, alcanzable); nodoPelea = new NodoPelea(adyecentes[i], num, pa_disponible, distancia); dictionary2[adyecentes[i].id] = nodoPelea; bool flag7 = nodoPelea2.distancia < (int)pm; if (flag7) { list.Add(nodoPelea); } goto IL_2BA; } } foreach (short num2 in dictionary.Keys) { dictionary[num2].camino = PeleasPathfinder.get_Path_Pelea(celda_actual.id, num2, dictionary); } result = dictionary; } return(result); }
public StrategyFormClient() { pelea = new Pelea(); InitializeComponent(); }
public abstract string Contraatacar(Pelea pelea);
public Task get_Combate_Celdas_Posicion(ClienteTcp cliente, string paquete) => Task.Run(async() => { Cuenta cuenta = cliente.cuenta; Mapa mapa = cuenta.juego.mapa; Pelea pelea = cuenta.juego.pelea; if (!cuenta.esta_Luchando() || pelea.estado_pelea != 2) { return; } await Task.Delay(1000); if (cuenta.pelea_extension.configuracion.posicionamiento != PosicionamientoInicioPelea.INMOVIL) { string[] _loc3 = paquete.Substring(2).Split('|'); List <Celda> celdas_preparacion = new List <Celda>(); for (int a = 0; a < _loc3[0].Length; a += 2) { celdas_preparacion.Add(mapa.get_Celda_Id((short)((Hash.get_Hash(_loc3[0][a]) << 6) + Hash.get_Hash(_loc3[0][a + 1])))); } List <Celda> celdas_preparacion_disponibles = celdas_preparacion.Except(cuenta.juego.pelea.get_Aliados.Select(aliado => aliado.celda)).ToList(); /** la posicion es aleatoria pero el paquete GP siempre aparecera primero el team donde esta el pj **/ short celda_posicion = pelea.get_Celda_Mas_Cercana_O_Lejana(cuenta.pelea_extension.configuracion.posicionamiento == PosicionamientoInicioPelea.CERCA_DE_ENEMIGOS, celdas_preparacion_disponibles); if (celda_posicion != pelea.jugador_luchador.celda.id) { await cliente.enviar_Paquete_Async("Gp" + celda_posicion, true); await Task.Delay(300); } } if (cuenta.tiene_grupo && cuenta.es_lider_grupo) { await cliente.enviar_Paquete_Async("fP"); await cuenta.grupo.get_Esperar_Miembros_Unirse_Pelea(); if (pelea.pelea_iniciada) { return; } } await Task.Delay(300); if (cuenta.pelea_extension.configuracion.desactivar_espectador) { await cliente.enviar_Paquete_Async("fS"); } await Task.Delay(300); if (cuenta.puede_utilizar_dragopavo) { if (cuenta.pelea_extension.configuracion.utilizar_dragopavo && !cuenta.juego.personaje.esta_utilizando_dragopavo) { await cliente.enviar_Paquete_Async("Rr"); cuenta.juego.personaje.esta_utilizando_dragopavo = true; } } await Task.Delay(300); await cliente.enviar_Paquete_Async("GR1");//boton listo });
public async Task get_Iniciar_Accion(ClienteTcp cliente, string paquete) { string[] separador = paquete.Substring(2).Split(new char[] { ';' }); int id_accion = int.Parse(separador[1]); Cuenta cuenta = cliente.cuenta; PersonajeJuego personaje = cuenta.juego.personaje; bool flag = id_accion > 0; if (flag) { int id_entidad = int.Parse(separador[2]); Mapa mapa = cuenta.juego.mapa; Pelea pelea = cuenta.juego.pelea; int num = id_accion; int num2 = num; int num3 = num2; Celda celda; Luchadores luchador; if (num3 <= 151) { if (num3 <= 102) { switch (num3) { case 1: { celda = mapa.get_Celda_Id(Hash.get_Celda_Id_Desde_hash(separador[3].Substring(separador[3].Length - 2))); bool flag2 = !cuenta.esta_luchando(); if (flag2) { bool flag3 = id_entidad == personaje.id && celda.id > 0 && personaje.celda.id != celda.id; if (flag3) { byte tipo_gkk_movimiento = byte.Parse(separador[0]); await cuenta.juego.manejador.movimientos.evento_Movimiento_Finalizado(celda, tipo_gkk_movimiento, true); } else { Entidad entidad; if (mapa.entidades.TryGetValue(id_entidad, out entidad)) { entidad.celda = celda; if (GlobalConf.mostrar_mensajes_debug) { cuenta.logger.log_informacion("DEBUG", "Detectado movimiento de una entidad a la casilla: " + celda.id.ToString()); } } entidad = null; } mapa.evento_Entidad_Actualizada(); } else { luchador = pelea.get_Luchador_Por_Id(id_entidad); if (luchador != null) { luchador.celda = celda; if (luchador.id == personaje.id) { byte tipo_gkk_movimiento = byte.Parse(separador[0]); await Task.Delay(400 + 100 *personaje.celda.get_Distancia_Entre_Dos_Casillas(celda)); cuenta.conexion.enviar_Paquete("GKK" + tipo_gkk_movimiento.ToString(), false); } } } break; } case 2: case 3: break; case 4: separador = separador[3].Split(new char[] { ',' }); celda = mapa.get_Celda_Id(short.Parse(separador[1])); if (!cuenta.esta_luchando() && id_entidad == personaje.id && celda.id > 0 && personaje.celda.id != celda.id) { personaje.celda = celda; await Task.Delay(150); cuenta.conexion.enviar_Paquete("GKK1", false); mapa.evento_Entidad_Actualizada(); cuenta.juego.manejador.movimientos.movimiento_Actualizado(true); } break; case 5: if (cuenta.esta_luchando()) { separador = separador[3].Split(new char[] { ',' }); luchador = pelea.get_Luchador_Por_Id(int.Parse(separador[0])); if (luchador != null) { luchador.celda = mapa.get_Celda_Id(short.Parse(separador[1])); } } break; default: if (num3 == 102) { if (cuenta.esta_luchando()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); byte pa_utilizados = byte.Parse(separador[3].Split(new char[] { ',' })[1].Substring(1)); if (luchador != null) { Luchadores luchadores = luchador; luchadores.pa -= pa_utilizados; } } } break; } } else if (num3 != 103) { if (num3 != 129) { if (num3 == 151) { if (cuenta.esta_luchando()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); if (luchador != null && luchador.id == personaje.id) { cuenta.logger.log_Error("INFORMATION", "No es posible realizar esta acción por culpa de un obstáculo invisible."); pelea.get_Hechizo_Lanzado(short.Parse(separador[3]), false); } } } } else if (cuenta.esta_luchando()) { luchador = pelea.get_Luchador_Por_Id(id_entidad); byte pm_utilizados = byte.Parse(separador[3].Split(new char[] { ',' })[1].Substring(1)); if (luchador != null) { Luchadores luchadores2 = luchador; luchadores2.pm -= pm_utilizados; } if (luchador.id == personaje.id) { pelea.get_Movimiento_Exito(true); } } } else if (cuenta.esta_luchando()) { int id_muerto = int.Parse(separador[3]); luchador = pelea.get_Luchador_Por_Id(id_muerto); if (luchador != null) { luchador.esta_vivo = false; } } } else if (num3 <= 300) { if (num3 != 181) { if (num3 == 300) { if (cuenta.esta_luchando() && id_entidad == cuenta.juego.personaje.id) { short celda_id_lanzado = short.Parse(separador[3].Split(new char[] { ',' })[1]); pelea.get_Hechizo_Lanzado(celda_id_lanzado, true); } } } else { celda = mapa.get_Celda_Id(short.Parse(separador[3].Substring(1))); short id_luchador = short.Parse(separador[6]); short vida = short.Parse(separador[15]); byte pa = byte.Parse(separador[16]); byte pm = byte.Parse(separador[17]); byte equipo = byte.Parse(separador[25]); pelea.get_Agregar_Luchador(new Luchadores((int)id_luchador, true, (int)vida, pa, pm, celda, (int)vida, equipo, id_entidad)); } } else if (num3 != 302) { if (num3 != 501) { if (num3 == 900) { cuenta.conexion.enviar_Paquete("GA902" + id_entidad.ToString(), true); cuenta.logger.log_informacion("INFORMATION", "Desafio del personaje id: " + id_entidad.ToString() + " cancelado"); } } else { int tiempo_recoleccion = int.Parse(separador[3].Split(new char[] { ',' })[1]); celda = mapa.get_Celda_Id(short.Parse(separador[3].Split(new char[] { ',' })[0])); byte tipo_gkk_recoleccion = byte.Parse(separador[0]); await cuenta.juego.manejador.recoleccion.evento_Recoleccion_Iniciada(id_entidad, tiempo_recoleccion, celda.id, tipo_gkk_recoleccion); } } else if (cuenta.esta_luchando() && id_entidad == cuenta.juego.personaje.id) { pelea.get_Hechizo_Lanzado(0, false); } celda = null; luchador = null; mapa = null; pelea = null; } }