Ejemplo n.º 1
0
        public bool equipar_Objeto(ObjetosInventario objeto)
        {
            if (objeto == null || objeto.cantidad == 0 || cuenta.esta_ocupado())
            {
                cuenta.logger.log_Error("INVENTAIRE", $"L'objet {objeto.nombre} ne peux être équipé");
                return(false);
            }

            if (objeto.nivel > cuenta.juego.personaje.nivel)
            {
                cuenta.logger.log_Error("INVENTAIRE", $"Le niveau de l'objet {objeto.nombre} est supérieur à ton niveau");
                return(false);
            }

            if (objeto.posicion != InventarioPosiciones.NO_EQUIPADO)//objeto ya esta equipado
            {
                cuenta.logger.log_Error("INVENTAIRE", $"l'objet {objeto.nombre} est équipé");
                return(false);
            }

            List <InventarioPosiciones> possibles_posiciones = InventarioUtiles.get_Posibles_Posiciones(objeto.tipo);

            if (possibles_posiciones == null || possibles_posiciones.Count == 0)//objeto no equipable
            {
                cuenta.logger.log_Error("INVENTARIO", $"L'objet {objeto.nombre} n'est pas équipable");
                return(false);
            }

            foreach (InventarioPosiciones posicion in possibles_posiciones)
            {
                if (get_Objeto_en_Posicion(posicion) == null)
                {
                    cuenta.conexion.enviar_Paquete("OM" + objeto.id_inventario + "|" + (sbyte)posicion, true);
                    cuenta.logger.log_informacion("INVENTAIRE", $"{objeto.nombre} équipé.");
                    objeto.posicion = posicion;
                    inventario_actualizado?.Invoke(true);
                    return(true);
                }
            }

            //desequipa X objeto si ya esta equipado
            if (_objetos.TryGetValue(get_Objeto_en_Posicion(possibles_posiciones[0]).id_inventario, out ObjetosInventario objeto_equipado))
            {
                objeto_equipado.posicion = InventarioPosiciones.NO_EQUIPADO;
                cuenta.conexion.enviar_Paquete("OM" + objeto_equipado.id_inventario + "|" + (sbyte)InventarioPosiciones.NO_EQUIPADO);
            }

            cuenta.conexion.enviar_Paquete("OM" + objeto.id_inventario + "|" + (sbyte)possibles_posiciones[0]);

            if (objeto.cantidad == 1)
            {
                objeto.posicion = possibles_posiciones[0];
            }

            cuenta.logger.log_informacion("INVENTAIRE", $"{objeto.nombre} équipé.");
            inventario_actualizado?.Invoke(true);
            return(true);
        }
Ejemplo n.º 2
0
        public bool equipar_Objeto(ObjetosInventario objeto)
        {
            if (objeto == null || objeto.cantidad == 0 || cuenta.IsBusy())
            {
                cuenta.Logger.log_Error("INVENTARIO", $"El objeto {objeto.nombre} no se puede equipar");
                return(false);
            }

            if (objeto.nivel > cuenta.Game.Character.nivel)
            {
                cuenta.Logger.log_Error("INVENTARIO", $"El nivel del objeto {objeto.nombre} es superior al nivel actual.");
                return(false);
            }

            if (objeto.posicion != InventarioPosiciones.NO_EQUIPADO)//objeto ya esta equipado
            {
                cuenta.Logger.log_Error("INVENTARIO", $"El objeto {objeto.nombre} ya esta equipado");
                return(false);
            }

            List <InventarioPosiciones> possibles_posiciones = InventarioUtiles.get_Posibles_Posiciones(objeto.tipo);

            if (possibles_posiciones == null || possibles_posiciones.Count == 0)//objeto no equipable
            {
                cuenta.Logger.log_Error("INVENTARIO", $"El objeto {objeto.nombre} no es equipable.");
                return(false);
            }

            foreach (InventarioPosiciones posicion in possibles_posiciones)
            {
                if (get_Objeto_en_Posicion(posicion) == null)
                {
                    cuenta.Connection.enviar_Paquete("OM" + objeto.id_inventario + "|" + (sbyte)posicion, true);
                    cuenta.Logger.log_informacion("INVENTARIO", $"{objeto.nombre} equipado.");
                    objeto.posicion = posicion;
                    inventario_actualizado?.Invoke(true);
                    return(true);
                }
            }

            //desequipa X objeto si ya esta equipado
            if (_objetos.TryGetValue(get_Objeto_en_Posicion(possibles_posiciones[0]).id_inventario, out ObjetosInventario objeto_equipado))
            {
                objeto_equipado.posicion = InventarioPosiciones.NO_EQUIPADO;
                cuenta.Connection.enviar_Paquete("OM" + objeto_equipado.id_inventario + "|" + (sbyte)InventarioPosiciones.NO_EQUIPADO);
            }

            cuenta.Connection.enviar_Paquete("OM" + objeto.id_inventario + "|" + (sbyte)possibles_posiciones[0]);

            if (objeto.cantidad == 1)
            {
                objeto.posicion = possibles_posiciones[0];
            }

            cuenta.Logger.log_informacion("INVENTARIO", $"{objeto.nombre} equipado.");
            inventario_actualizado?.Invoke(true);
            return(true);
        }