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)
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)
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)
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)
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)
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)
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)
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)
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)