From 3c141f870cc1fa1973c8888e482c12f9f8948d09 Mon Sep 17 00:00:00 2001 From: TimHasert <27998143+TimH96@users.noreply.github.com> Date: Sun, 20 Aug 2023 22:55:07 +0200 Subject: [PATCH] implement basic equipment and decos script --- scripts/get-equipment-decos.py | 95 ++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 scripts/get-equipment-decos.py diff --git a/scripts/get-equipment-decos.py b/scripts/get-equipment-decos.py new file mode 100644 index 0000000..54a2784 --- /dev/null +++ b/scripts/get-equipment-decos.py @@ -0,0 +1,95 @@ +import json + +def reorder_resistances(raw: list) -> list: + return [ + raw[0], + raw[1], + raw[3], + raw[2], + raw[4], + ] + +def map_skills_map(raw: dict, skill_ids: dict) -> dict: + skills = {} + for s in raw: + n = s["k"] + id = skill_ids[n] + try: + v = int(s["q"]) + except: + v = 0 # torso up + skills[id] = v + + return skills + +def map_deco(raw: dict, skill_ids: dict) -> dict: + return { + "name": raw["name"], + "rarity": raw["rarity"], + "requiredSlots": raw["slots"], + "skills": map_skills_map(raw["skills"], skill_ids), + } + + +if __name__ == "__main__": + # read input + with open("./raw-decos.json") as f: + decos = list(json.loads(f.read())) + with open("./raw-armor.json") as f: + armor = list(json.loads(f.read())) + with open("../data/skill-names.json") as f: + skill_names = dict(json.loads(f.read())) + + # reverse skill names + skill_ids = {v: int(k) for k, v in skill_names.items()} + + # decorations + modeled_decos = [map_deco(x, skill_ids) for x in decos] + + # iterate over armor categories + pieces_per_category = [] + for (cat_index, armor_category) in enumerate(armor): + pieces_of_cat = [] + # iterate over pieces of that category + for piece in armor_category["armor"]: + # get attributes + name = piece["name"] + if name == "None": continue + defe = piece["defense"] + + # get type + try: + x = piece["hunterClass"] + type = 1 if x == "Blademaster" else 2 + except: + type = 0 + + # get skills + try: + skills = piece["skills"] + except: + skills = [] + + # model and push piece + modeled_piece = { + "category": cat_index, + "name": name, + "rarity": piece["rarity"], + "skills": map_skills_map(skills, skill_ids), + "slots": piece["slots"][-1], + "defense": { + "base": defe[0], + "max": defe[-1], + }, + "type": type, + "resistance": reorder_resistances(piece["resistances"]), + } + pieces_of_cat.append(modeled_piece) + pieces_per_category.append(pieces_of_cat) + + # save files + for (i, cat_name) in enumerate(["head", "chest", "arms", "waist", "legs"]): + with open(f"../data/{cat_name}.json", "w") as f: + f.write(json.dumps(pieces_per_category[i], indent=4, sort_keys=True)) + with open("../data/decorations.json", "w") as f: + f.write(json.dumps(modeled_decos, indent=4))