Esempio n. 1
0
def get_adv_wp_list():
    if not (request.method == "GET" or request.method == "POST"):
        return "Wrong request method."
    result = {}
    result["adv"] = {}
    for name, variants in ADV_MODULES.items():
        result["adv"][name] = {
            "fullname":
            get_fullname(name),
            "variants": [
                vkey for vkey in variants.keys()
                if vkey is not None and vkey != "mass"
            ],
        }
    wplists = {"formA": {}, "formB": {}, "formC": {}}
    for wp, data in wyrmprints.items():
        ab_str = f'-{data["union"]}'
        if data["a"]:
            ab_str = "[" + "‖".join(
                ["|".join(map(str, ab)) for ab in data["a"]]) + "]" + ab_str
        else:
            ab_str = "[]" + ab_str
        display_name = data["name"] + " " + ab_str
        wplists[RARITY_MAP[data["rarity"]]][wp] = display_name
    result["wyrmprints"] = wplists
    result["skillshare"] = {
        k: {
            "fullname": get_fullname(k),
            **v
        }
        for k, v in skillshare.items()
    }
    return jsonify(result)
Esempio n. 2
0
def get_adv_wp_list():
    if not (request.method == 'GET' or request.method == 'POST'):
        return 'Wrong request method.'
    result = {}
    result['adv'] = {}
    for name, variants in ADV_MODULES.items():
        result['adv'][name] = {
            'fullname':
            get_fullname(name),
            'variants': [
                vkey for vkey in variants.keys()
                if vkey is not None and vkey != 'mass'
            ]
        }
    wplists = {'gold': {}, 'silver': {}}
    for wp, data in wyrmprints.items():
        ab_str = f'-{data["union"]}'
        if data['a']:
            ab_str = '[' + '|'.join(map(str, data['a'][0])) + ']' + ab_str
        else:
            ab_str = '[]' + ab_str
        if data['rarity'] == 5:
            wplists['gold'][wp] = data['name'] + ' ' + ab_str
        else:
            wplists['silver'][wp] = data['name'] + ' ' + ab_str
    result['wyrmprints'] = wplists
    result['skillshare'] = {
        k: {
            'fullname': get_fullname(k),
            **v
        }
        for k, v in skillshare.items()
    }
    return jsonify(result)
Esempio n. 3
0
def get_adv_wp_list():
    if not (request.method == 'GET' or request.method == 'POST'):
        return 'Wrong request method.'
    result = {}
    result['adv'] = {}
    for name in ADV_MODULES.keys():
        try:
            result['adv'][name] = load_adv_json(name)['c']['name']
        except FileNotFoundError:
            result['adv'][name] = SPECIAL_ADV[name]['fullname']
    wplists = {'gold': {}, 'silver': {}}
    for wp, data in wyrmprints.items():
        ab_str = f'-{data["union"]}'
        if data['a']:
            ab_str = '[' + '|'.join(map(str, data['a'][0])) + ']' + ab_str
        else:
            ab_str = '[]' + ab_str
        if data['rarity'] == 5:
            wplists['gold'][wp] = data['name'] + ' ' + ab_str
        else:
            wplists['silver'][wp] = data['name'] + ' ' + ab_str
    result['wyrmprints'] = wplists
    result['skillshare'] = {
        k: {
            'fullname': get_fullname(k),
            **v
        }
        for k, v in skillshare.items()
    }
    return jsonify(result)
Esempio n. 4
0
def get_adv_slotlist():
    result = {}
    result['adv'] = {}
    if request.method == 'GET':
        advname = request.args.get('adv', default=None)
        variant = request.args.get('variant', default=None)
        equip_key = request.args.get('equip', default=None)
        duration = request.args.get('t', default=180)
    elif request.method == 'POST':
        params = request.get_json(silent=True)
        advname = params.get('adv', None)
        variant = params.get('variant', None)
        equip_key = params.get('equip', None)
        duration = params.get('t', 180)
    else:
        return 'Wrong request method.'
    duration = max(min(((int(duration) // 60) * 60), 180), 60)
    if advname is not None:
        adv = ADV_MODULES[advname][variant](name=advname,
                                            duration=duration,
                                            equip_key=equip_key)
        adv.config_slots()
        result['adv']['basename'] = adv.name
        result['adv']['ele'] = adv.slots.c.ele
        result['adv']['wt'] = adv.slots.c.wt
        result['adv']['pref_dra'] = adv.slots.d.qual
        result['adv']['pref_wep'] = f'{adv.slots.c.ele}-{adv.slots.c.wt}'
        result['adv']['pref_wp'] = adv.slots.a.qual_lst
        try:
            result['adv']['pref_coab'] = adv.conf.coabs['base'] or []
        except:
            result['adv']['pref_coab'] = adv.conf['coabs'] or []
        try:
            result['adv']['pref_share'] = adv.conf.share['base'] or []
        except:
            result['adv']['pref_share'] = adv.conf['share'] or []
        result['adv']['acl'] = adv.conf.acl
        if adv.conf['tdps'] and 0 <= adv.conf['tdps'] <= 200000:
            result['adv']['tdps'] = int(adv.conf.tdps) + 1
        if adv.equip_key:
            result['adv']['equip'] = adv.equip_key

        weapon = weapons[adv.slots.c.ele][adv.slots.c.wt]
        weapon_name = f'Agito T{weapon["tier"]} {weapon["name"]}'
        result['weapons'] = {
            f'{adv.slots.c.ele}-{adv.slots.c.wt}': weapon_name
        }
        result['dragons'] = {
            drg: data['d']['name']
            for drg, data in dragons[adv.slots.c.ele].items()
        }
        # gold fafu lul
        result['dragons']['Gold_Fafnir'] = 'Gold Fafnir'
        result['coabilities'] = {
            k: (get_fullname(k), *v)
            for k, v in adv.slots.c.valid_coabs.items()
        }
    return jsonify(result)
Esempio n. 5
0
def get_adv_slotlist():
    result = {}
    result['adv'] = {}
    if request.method == 'GET':
        advname = request.args.get('adv', default=None)
        equip_key = request.args.get('equip', default=None)
        duration = request.args.get('t', default=180)
    elif request.method == 'POST':
        params = request.get_json(silent=True)
        advname = params.get('adv')
        equip_key = params.get('equip')
        duration = params.get('t', 180)
    else:
        return 'Wrong request method.'
    duration = max(min(((int(duration) // 60)*60), 180), 60)
    if advname is not None:
        adv = ADV_MODULES[advname](duration=duration, equip_key=equip_key)
        adv.config_slots()
        result['adv']['basename'] = adv.__class__.__name__
        result['adv']['ele'] = adv.slots.c.ele
        result['adv']['wt'] = adv.slots.c.wt
        result['adv']['pref_dra'] = adv.slots.d.qual
        result['adv']['pref_wep'] = f'{adv.slots.c.ele}-{adv.slots.c.wt}'
        result['adv']['pref_wp'] = adv.slots.a.qual_lst
        try:
            result['adv']['pref_coab'] = adv.conf.coabs['base'] or []
        except:
            result['adv']['pref_coab'] = adv.conf['coabs'] or []
        try:
            result['adv']['pref_share'] = adv.conf.share['base'] or []
        except:
            result['adv']['pref_share'] = adv.conf['share'] or []
        result['adv']['acl'] = adv.conf.acl
        # if 'afflict_res' in adv.conf:
        #     res_conf = adv.conf.afflict_res
        #     res_dict = {}
        #     for afflic in AFFLICT_LIST:
        #         if afflic in res_conf:
        #             res_dict[afflic] = res_conf[afflic]
        #     if len(res_dict.keys()) > 0:
        #         result['adv']['afflict_res'] = res_dict
        if advname in SPECIAL_ADV:
            result['adv']['no_config'] = SPECIAL_ADV[advname]['nc']

        if adv.conf['tdps'] and 0 <= adv.conf['tdps'] <= 200000:
            result['adv']['tdps'] = int(adv.conf.tdps) + 1
        if adv.equip_key:
            result['adv']['equip'] = adv.equip_key

        weapon = weapons[adv.slots.c.ele][adv.slots.c.wt]
        weapon_name = f'Agito T{weapon["tier"]} {weapon["name"]}'
        result['weapons'] = {f'{adv.slots.c.ele}-{adv.slots.c.wt}': weapon_name}
        result['dragons'] = {drg: data['d']['name'] for drg, data in dragons[adv.slots.c.ele].items()}
        # gold fafu lul
        result['dragons']['Gold_Fafnir'] = 'Gold Fafnir'
        result['coabilities'] = {k: (get_fullname(k), *v) for k, v in adv.slots.c.valid_coabs.items()}
    return jsonify(result)
Esempio n. 6
0
def slots_csv(adv, web):
    padded_coab = adv.slots.c.coab_list.copy()
    if len(padded_coab) < 3:
        padded_coab.extend([''] * (3 - len(padded_coab)))
    padded_share = adv.skillshare_list.copy()
    if len(padded_share) < 2:
        padded_share.extend([''] * (2 - len(padded_share)))
    if not web:
        return (str(adv.slots), *padded_coab, *padded_share)
    icon_lst = []
    for name in chain(padded_coab, padded_share):
        if not name:
            icon_lst.extend(('', ''))
        else:
            icon_lst.extend((get_fullname(name), get_icon(name)))
    return (adv.slots.full_slot_icons(), *icon_lst)
Esempio n. 7
0
def get_adv_slotlist():
    result = {}
    result["adv"] = {}
    if request.method == "GET":
        advname = request.args.get("adv", default=None)
        variant = request.args.get("variant", default=None)
        equip_key = request.args.get("equip", default=None)
        mono = bool(request.args.get("mono", default=None))
        duration = request.args.get("t", default=180)
    elif request.method == "POST":
        params = request.get_json(silent=True)
        advname = params.get("adv", None)
        variant = params.get("variant", None)
        equip_key = params.get("equip", None)
        mono = bool(params.get("mono", None))
        duration = params.get("t", 180)
    else:
        return "Wrong request method."
    duration = max(min(((int(duration) // 60) * 60), 180), 60)
    if advname is not None:
        adv = ADV_MODULES[advname][variant](name=advname,
                                            duration=duration,
                                            equip_key=equip_key,
                                            mono=mono)
        adv.config_slots()
        result["adv"]["basename"] = adv.name
        result["adv"]["ele"] = adv.slots.c.ele
        result["adv"]["wt"] = adv.slots.c.wt
        result["adv"]["pref_dra"] = adv.slots.d.qual
        result["adv"]["pref_wep"] = adv.slots.w.qual
        result["adv"]["pref_wp"] = adv.slots.a.qual_lst
        result["adv"]["pref_coab"] = adv.conf["coabs"] or []
        result["adv"]["pref_share"] = adv.conf["share"] or []
        result["adv"]["acl"] = adv.conf.acl
        if adv.conf["tdps"] and 0 <= adv.conf["tdps"] <= 200000:
            result["adv"]["tdps"] = int(adv.conf.tdps) + 1
        if adv.equip_key:
            result["adv"]["equip"] = adv.equip_key

        available_wpn = {
            **weapons[adv.slots.c.wt]["any"],
            **weapons[adv.slots.c.wt][adv.slots.c.ele],
        }
        result["weapons"] = {}
        for series, wpn in sorted(available_wpn.items(),
                                  key=lambda w: -w[1]["w"]["att"]):
            result["weapons"][
                series] = f'{wpn["w"]["series"]} | {wpn["w"]["name"]}'
        result["dragons"] = {
            drg: data["d"]["name"]
            for drg, data in dragons[adv.slots.c.ele].items()
        }
        # gold fafu lul
        result["dragons"]["Gold_Fafnir"] = "Gold Fafnir"
        if mono:
            result["coabilities"] = {
                k: (get_fullname(k), *summarize_coab(v))
                for k, v in mono_elecoabs[adv.slots.c.ele].items()
            }
        else:
            result["coabilities"] = {
                k: (get_fullname(k), *summarize_coab(v))
                for k, v in adv.slots.c.valid_coabs.items()
            }
        if equip_key == "noaffliction":
            result["afflict_res"] = Afflics.RESIST_PROFILES["immune"]
        else:
            result["afflict_res"] = Afflics.RESIST_PROFILES[adv.slots.c.ele]
    return jsonify(result)
Esempio n. 8
0
def get_adv_slotlist():
    result = {}
    result['adv'] = {}
    if request.method == 'GET':
        advname = request.args.get('adv', default=None)
        variant = request.args.get('variant', default=None)
        equip_key = request.args.get('equip', default=None)
        mono = bool(request.args.get('mono', default=None))
        duration = request.args.get('t', default=180)
    elif request.method == 'POST':
        params = request.get_json(silent=True)
        advname = params.get('adv', None)
        variant = params.get('variant', None)
        equip_key = params.get('equip', None)
        mono = bool(params.get('mono', None))
        duration = params.get('t', 180)
    else:
        return 'Wrong request method.'
    duration = max(min(((int(duration) // 60) * 60), 180), 60)
    if advname is not None:
        adv = ADV_MODULES[advname][variant](name=advname,
                                            duration=duration,
                                            equip_key=equip_key)
        adv.config_slots()
        result['adv']['basename'] = adv.name
        result['adv']['ele'] = adv.slots.c.ele
        result['adv']['wt'] = adv.slots.c.wt
        result['adv']['pref_dra'] = adv.slots.d.qual
        result['adv']['pref_wep'] = adv.slots.w.qual
        result['adv']['pref_wp'] = adv.slots.a.qual_lst
        result['adv']['pref_coab'] = adv.conf['coabs'] or []
        result['adv']['pref_share'] = adv.conf['share'] or []
        result['adv']['acl'] = adv.conf.acl
        if adv.conf['tdps'] and 0 <= adv.conf['tdps'] <= 200000:
            result['adv']['tdps'] = int(adv.conf.tdps) + 1
        if adv.equip_key:
            result['adv']['equip'] = adv.equip_key

        available_wpn = {
            **weapons[adv.slots.c.wt]['any'],
            **weapons[adv.slots.c.wt][adv.slots.c.ele]
        }
        result['weapons'] = {}
        for series, wpn in sorted(available_wpn.items(),
                                  key=lambda w: -w[1]['w']['att']):
            result['weapons'][
                series] = f'{wpn["w"]["series"]} | {wpn["w"]["name"]}'
        result['dragons'] = {
            drg: data['d']['name']
            for drg, data in dragons[adv.slots.c.ele].items()
        }
        # gold fafu lul
        result['dragons']['Gold_Fafnir'] = 'Gold Fafnir'
        if mono:
            result['coabilities'] = {
                k: (get_fullname(k), *v)
                for k, v in mono_elecoabs[adv.slots.c.ele].items()
            }
        else:
            result['coabilities'] = {
                k: (get_fullname(k), *v)
                for k, v in adv.slots.c.valid_coabs.items()
            }
    return jsonify(result)
Esempio n. 9
0
File: app.py Progetto: dl-stuff/dl
def get_adv_slotlist():
    if not request.method == "POST":
        return "Wrong request method."
    result = {}
    result["adv"] = {}
    params = request.get_json(silent=True)
    advname = params.get("adv", None)
    variant = params.get("variant", None)
    equip_cond, opt_mode = build_equip_condition(params.get("equip", None))
    duration = params.get("t", 180)
    duration = max(min(((int(duration) // 60) * 60), 180), 60)
    if advname is not None:
        adv = ADV_MODULES[advname][variant](name=advname,
                                            duration=duration,
                                            equip_conditions=equip_cond,
                                            opt_mode=opt_mode)
        adv.config_slots()
        result["adv"]["basename"] = adv.name
        result["adv"]["ele"] = adv.slots.c.ele
        result["adv"]["wt"] = adv.slots.c.wt
        result["adv"]["pref_dra"] = adv.slots.d.qual
        result["adv"]["pref_wep"] = adv.slots.w.qual
        result["adv"]["pref_wp"] = adv.slots.a.qual_lst
        result["adv"]["pref_coab"] = adv.conf["coabs"] or []
        result["adv"]["pref_share"] = adv.conf["share"] or []
        result["adv"]["acl"] = adv.conf.acl
        if opt_mode is not None and adv.equip_manager[equip_cond] != opt_mode:
            tdps = adv.equip_manager[equip_cond].tdps
            if tdps and 0 <= tdps <= 200000:
                result["adv"]["tdps"] = tdps

        available_wpn = {
            **weapons[adv.slots.c.wt]["any"],
            **weapons[adv.slots.c.wt][adv.slots.c.ele],
        }
        result["weapons"] = {}
        for series, wpn in sorted(available_wpn.items(),
                                  key=lambda w: -w[1]["w"]["att"]):
            result["weapons"][
                series] = f'{wpn["w"]["series"]} | {wpn["w"]["name"]}'
        result["dragons"] = {
            drg: data["d"]["name"]
            for drg, data in dragons[adv.slots.c.ele].items()
        }
        # gold fafu lul
        result["dragons"]["Gold_Fafnir"] = "Gold Fafnir"

        if equip_cond.mono == MonoCondition.MONO:
            result["coabilities"] = {
                k: (get_fullname(k), *summarize_coab(v))
                for k, v in mono_elecoabs[adv.slots.c.ele].items()
            }
        else:
            result["coabilities"] = {
                k: (get_fullname(k), *summarize_coab(v))
                for k, v in adv.slots.c.valid_coabs.items()
            }

        result["ui"] = {}
        if equip_cond.aff == AfflictionCondition.IMMUNE:
            result["ui"]["afflict_res"] = Afflics.RESIST_PROFILES["immune"]
        else:
            result["ui"]["afflict_res"] = Afflics.RESIST_PROFILES[(
                adv.slots.c.ele,
                equip_cond.sit == SituationCondition.NIHILISM)]
        if equip_cond.aff == AfflictionCondition.ALWAYS:
            result["ui"]["sim_afflict"] = {aff: 100 for aff in adv.sim_afflict}
        else:
            result["ui"]["sim_afflict"] = {aff: "" for aff in AFFLICT_LIST}
        if equip_cond.sit == SituationCondition.NIHILISM:
            result["ui"]["specialmode"] = "nihilism"
        else:
            result["ui"]["specialmode"] = "none"
        result["ui"]["aff"] = str(equip_cond.aff)
        result["ui"]["sit"] = str(equip_cond.sit)
        if opt_mode is None:
            result["ui"]["opt"] = str(adv.equip_manager[equip_cond].pref)
        else:
            result["ui"]["opt"] = str(opt_mode)
    return jsonify(result)