Esempio n. 1
0
def elegir_raza(RAZAS):
    '''Provee un selector de razas.'''

    razas = [RAZAS[str(i)]['Nombre'] for i in range(len(RAZAS))]

    print('\n' + t('Seleccione Raza'))
    for i in range(len(RAZAS)):
        if (i + 1) % 4 == 0:
            print(str(i + 1) + ': ' + razas[i], end='\n')
        else:
            print(str(i + 1) + ': ' + razas[i], end=' ')

    raza = ''
    while raza == '':
        r = input('\n\n' + t('Raza: '))
        if r.isnumeric():
            r = int(r)
            if not 1 <= r <= len(RAZAS):
                print(t('Raza inválida, intente nuevamente'))
                continue
            else:
                r -= 1
        else:
            r = probar_input(r, razas)
            if r == '':
                print(
                    t('Raza inválida o error ortográfico, intente nuevamente'))
                continue
            else:
                r = razas.index(r)
        print(t('Has elegido que este personaje sea') + ' ' +
              t('un ' + razas[r]) + '.',
              end=' ')
        if input(t('¿Estas seguro? ')).lower().startswith(t('s')):
            return str(r)
Esempio n. 2
0
def SelDot(DOTES, posibles):
    nom = [DOTES[str(i)]['Nombre'] for i in range(len(DOTES))]
    des = [DOTES[str(i)]['Descripcion'] for i in range(len(DOTES))]
    mec = [DOTES[str(i)]['Tipo'] for i in range(len(DOTES))]
    pre = []
    for i in range(len(DOTES)):
        if 'PreReq' in DOTES[str(i)]:
            pre.append(DOTES[str(i)]['PreReq'])
        else:
            pre.append('')

    dote = ''
    dt = ''
    while dote == '':
        dt = input(t('\nDote') + ': ').strip().capitalize()
        dt = probar_input(dt, nom)
        if dt == '':
            print(t('Escriba el nombre de una dote') + '\n')
        else:
            if nom.index(dt) not in posibles:
                print(t(
                    'Actualmente el personaje no cumple con los prerrequisitos para la dote seleccionada'
                ),
                      t('Elija otra'),
                      sep='\n')
            elif ':' in mec[nom.index(dt)]:
                sub = mec[nom.index(dt)].split(':')[1]
                if sub == 'w':
                    dote = u_w(dt, p.competencias['Armas'], p.dotes, s.ARMAS,
                               nom, pre, des, DOTES)
                elif sub == 'w?':
                    dote = u_w2(dt, nom, pre, des, DOTES)
                elif sub == 'm':
                    dote = u_m(dt, p.competencias['Armas'], p.dotes, nom, pre,
                               des, s.ARMAS, DOTES)
                elif sub == 'e':
                    dote = u_e(dt, p.dotes, s.ESCUELAS, nom, pre, des, DOTES)
                elif sub == 'e?':
                    dote = u_e2(dt, nom, pre, des, DOTES, s.ESCUELAS)
                elif sub == 'c':
                    dote = u_c(dt, p.CARS['INT']['Mod'], p.conjuros,
                               s.CONJUROS, nom, pre, des, DOTES)
                elif sub == 'h':
                    dote = u_h(dt, s.HABS, nom, pre, des, DOTES)
            else:
                dote = str(nom.index(dt))
                prinfo(dt, nom, pre, des)

            if dote != '':
                if not input('\n' + t('¿Estas seguro? ')).lower().startswith(
                        t('s')):
                    dote = ''

    return dote
Esempio n. 3
0
def maximizar_habs(puntos, nv_cls, hab_cla, HABS):

    rng_max = nv_cls + 3
    rng_max_tc = rng_max / 2
    nom_hab = [HABS[str(i)]['Nombre'] for i in range(len(HABS))]

    rng = {}
    for h in nom_hab:
        rng[h] = 0

    if puntos > 0:
        print('Escoge ' + str(puntos) + ' habilidades')
        while puntos > 0:
            hab = input('\n' + 'Habilidad: ').strip(' ').capitalize()
            hab = probar_input(hab, nom_hab)
            if hab == '':
                print(t('Escriba el nombre de una habilidad'))
            elif hab not in hab_cla:
                if rng[hab] == rng_max_tc:
                    print(
                        hab +
                        ' está maximizada. No se pueden agregar más rangos en este nivel'
                    )
                else:
                    puntos -= 1
                    rng[hab] += rng_max_tc - rng[hab]
            else:
                if rng[hab] == rng_max:
                    print(
                        hab +
                        ' está maximizada. No se pueden agregar más rangos en este nivel'
                    )
                else:
                    puntos -= 1
                    rng[hab] += rng_max - rng[hab]

            if hab == 'Hablar un idioma':
                p.idiomas = nuevos_idiomas(s.IDIOMAS, p.idiomas,
                                           round(rng[hab]))

    rng_hab = []
    for i in range(len(nom_hab)):
        if nom_hab[i] in rng:
            rng_hab.append(rng[nom_hab[i]])

    return rng_hab, puntos
Esempio n. 4
0
def info_dote(DOTES):
    '''Devuelve la info completa de una dote por su nombre.'''

    dotes = [DOTES[str(i)]['Nombre'] for i in range(len(DOTES))]

    dote = ''
    while dote == '':
        dote = input('\nDote: ').capitalize()
        dote = probar_input(dote, dotes)
        if dote == '':
            print('\nDebe ingresar el nombre de una dote')

    for i in range(len(dotes)):
        if dotes[i] == dote:
            i = str(i)
            if 'PreReq' in DOTES[i]:
                texto = '\n'.join(('Prerrequisitos: ' + DOTES[i]['PreReq'],
                                   DOTES[i]['Descripcion']))
            else:
                texto = DOTES[i]['Descripcion']
    return texto
Esempio n. 5
0
def elegir_aumento_de_caracteristica (nivel,Cars):
    
    nom = [Cars[i]['Nom'] for i in range(len(Cars))]
    
    while True:
        imprimir_titulo()
        print ('\nEn el '+str(nivel)+'º nivel, tienes un aumento de características')
        print (t('Selecciona la característica que quieres aumentar'))
        car = subselector('Característica',nom)
        if car.isnumeric():
            Car = Cars[car]['Abr']
        else:
            car = probar_input(Car,nom)
            if car == '':
                print (t('La característica es inválida o inexistente'))
            else:
                car = nom.index(car)
                Car = Cars[car]['Abr']
   
    p.aumentar_caracteristicas(Car)
    print ('El personaje tiene ahora '+d.Cars[car]['Nom']+
           ' '+str(p.CARS[Car]['Punt'])+' (+'+str(p.CARS[Car]['M'])+')')
Esempio n. 6
0
def repartir_rangos(PH, nv_cls, hab_cla, HABS, rangos):
    '''Reparte los puntos de habilidad manualmente, uno por uno.'''

    print('\nTienes ' + str(PH) +
          ' puntos de habilidad para distribuir en este nivel.\n')

    print(
        '\nRecuerda que cualquier habilidad transclásea cuesta dos puntos en lugar de uno.',
        'Escribe una habilidad, y luego los puntos de habilidad que desees invertir en',
        'ella.',
        sep='\n')

    rng = {}
    for i in range(len(rangos)):
        rng[HABS[str(i)]['Nombre']] = rangos[i]

    nom_hab = [HABS[str(i)]['Nombre'] for i in range(len(HABS))]

    rng_max = nv_cls + 3
    rng_max_tc = rng_max / 2
    while PH > 0:
        hab = ''
        while hab == '':
            hab = input('\nHabilidad: ').strip(' ').capitalize()
            hab = probar_input(hab, nom_hab)
            if hab == '':
                print('\nDebe elegir una habilidad')

        if rng[hab] > 0:
            print(hab + ' ya posee ' + str(rng[hab]) + ' rangos.')

        puntos = ''
        while puntos == '':
            puntos = input('Puntos: ')
            if not puntos.isnumeric():
                print('Los rangos deben ser numéricos')
                puntos = ''
            elif int(puntos) > PH:
                print('No posees tantos puntos de habilidad')
                puntos = ''
            else:
                puntos = int(puntos)

        if hab not in hab_cla:  ## Habilidad Transclásea
            print(hab + ' es una habilidad transclásea')
            if rng[hab] == rng_max_tc:
                print(
                    hab +
                    ' está maximizada. No se pueden agregar más rangos en este nivel'
                )
            else:
                if rng[hab] + (puntos / 2) >= rng_max_tc:
                    print(hab + ' ha alcanzado el rango máximo (' +
                          str(rng_max_tc) + ').')
                    PH -= (rng_max_tc - rng[hab]) * 2
                    rng[hab] += rng_max_tc - rng[hab]
                else:
                    PH -= puntos
                    rng[hab] += puntos / 2
                print('\nPuntos restantes: ' + str(int(PH)))

        else:  ## Habilidad Clásea
            print(hab + ' es una habilidad clásea')
            if rng[hab] == rng_max:
                print(
                    hab +
                    ' está maximizada. No se pueden agregar más rangos en este nivel'
                )
            else:
                if rng[hab] + puntos >= rng_max:
                    print(hab + ' ha alcanzado el rango máximo (' +
                          str(rng_max) + ').')
                    PH -= rng_max - rng[hab]
                    rng[hab] += rng_max - rng[hab]
                else:
                    PH -= puntos
                    rng[hab] += puntos
                print('\nPuntos restantes: ' + str(int(PH)))

        if hab == 'Hablar un idioma':
            p.idiomas = nuevos_idiomas(s.IDIOMAS, p.idiomas, round(rng[hab]))

    rng_hab = []
    for i in range(len(nom_hab)):
        if nom_hab[i] in rng:
            rng_hab.append(rng[nom_hab[i]])

    return rng_hab
Esempio n. 7
0
def subselector(prompt, lista, vueltas=1, dos_col=False):
    from func.core.config import advt as advertencias
    items = []
    pool = vueltas
    copia = lista * 1  # copia de trabajo
    for vuelta in range(vueltas):
        if vuelta == 0:
            paginado = []
            for i in range(len(copia)):
                if copia[i][0:1] == '\n':
                    copia[i] = copia[i].strip('\n')
                    paginado.append('\n' + str(i) + ': ' + str(t(copia[i])))
                else:
                    paginado.append(str(i) + ': ' + str(t(copia[i])))
            if dos_col == False:
                paginar(10, paginado)
            else:
                paginar_dos_columnas(10, paginado)

        while pool > 0:
            item = ''
            while item == '':
                item = input('\n' + prompt + ': ').capitalize()
                if item.isnumeric():
                    item = int(item)
                    if item in items:
                        print(
                            t('Ya ha realizado esa selección, intente nuevamente'
                              ))
                        item = ''
                    elif item not in range(len(copia)):
                        print(
                            t('La selección es incorrecta, intente nuevamente')
                        )
                        item = ''
                    else:
                        if advertencias == True:
                            print(t('Ha elegido ') + t(copia[item]), end='. ')
                        items.append(item)
                        pool -= 1
                else:
                    item = probar_input(item, copia)
                    if item == '':
                        print(
                            t('La selección es incorrecta, intente nuevamente')
                            + '\n')
                    elif copia.index(item) in items:
                        print(
                            t('Ya ha realizado esa selección, intente nuevamente'
                              ))
                        item = ''
                    else:
                        if advertencias == True:
                            print(t('Ha elegido ') + t(item), end='. ')
                        items.append(copia.index(item))
                        pool -= 1
            if advertencias == True:
                if not input(t('¿Estas seguro? ') + t('[S / N]') +
                             ' ').strip().lower().startswith(t('s')):
                    pool += 1
                    del items[-1]
    if vueltas == 1:
        return items[0]
    else:
        return items
Esempio n. 8
0
def elegir_clase(claseprevia, CLASES, alineamiento):
    '''Provee un selector de clases.'''

    # genera dos listas con los nombres y abreviaturas compatibles con el alineamiento
    nom, abr = [], []
    for i in range(len(CLASES)):
        if alineamiento in CLASES[str(i)]['Alineamientos']:
            nom.append(CLASES[str(i)]['Nombre'])
            abr.append(CLASES[str(i)]['Abr'])

    # genera un string que muestra las clases disponibles numeradas a partir de 0
    imprimir = ''
    for i in range(len(nom)):
        if (i + 1) % 4 == 0 and nom[i] != nom[-1]:
            imprimir += str(i) + ': ' + nom[i] + '\n'
        else:
            imprimir += str(i) + ': ' + nom[i] + ' '

    print(t('Elija una clase para este nivel'), end=' ')
    if claseprevia != '':
        # claseprevia es la clase elegida en el nivel anterior.
        print('[Enter: ' + claseprevia + ']')
        # presionando enter se autoelige esa clase, acelerando el proceso

    print('\n\n' + t('Las clases disponibles según el alineamiento son') +
          ': \n' + imprimir)

    cla = '?'
    while True:
        while cla == '?':
            cla = input('\n' + 'Clase: ').capitalize()
            if cla == '':
                if claseprevia == '':
                    print('\n' + t('Debe seleccionar una clase'))
                    cla = '?'
                else:
                    # si hubo una clase previa, entonces '' es esa clase.
                    cla = nom.index(claseprevia)
            elif cla.isnumeric():
                cla = int(cla)
                if not 0 <= cla <= len(nom):
                    print(t('Seleccione una clase válida.'))
                    cla = '?'
            elif cla in abr:
                cla = abr.index(cla)
            else:
                cla = probar_input()
                if cla == '':
                    print('\n' + t('Seleccione una clase válida.'))
                    cla = '?'
                else:
                    cla = nom.index(cla)

        print(t("Has seleccionado '") + nom[cla] +
              t("' como clase para este nivel."),
              end=' ')
        if not input(t('¿Estas seguro? ')).lower().startswith(t('s')):
            cla = '?'
        else:
            for Clase in CLASES:
                if nom[cla] == CLASES[Clase]['Nombre']:
                    break
            break

    return str(Clase)