Skip to content

Commit

Permalink
auto find position of random number (#169)
Browse files Browse the repository at this point in the history
  • Loading branch information
aeon0 authored Feb 5, 2024
1 parent 45b1ad6 commit f425d89
Show file tree
Hide file tree
Showing 7 changed files with 1,693 additions and 448 deletions.
1,495 changes: 1,247 additions & 248 deletions assets/lang/enUS/aspects.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions assets/lang/enUS/sigils.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
"dungeons": {
"vault_of_copper": "vault of copper",
"vault_of_cinder": "vault of cinder",
"vault_of_ink": "vault of ink",
"vault_of_stone": "vault of stone",
"anicas_claim": "anicas claim",
"black_asylum": "black asylum",
"caldera_gate": "caldera gate",
Expand Down
497 changes: 410 additions & 87 deletions assets/lang/enUS/uniques.json

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions src/dataloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ class Dataloader:
affix_dict = dict()
affix_sigil_dict = dict()
aspect_dict = dict()
aspect_snoids = dict()
aspect_num_idx = dict()
aspect_unique_dict = dict()
aspect_unique_snoids = dict()
aspect_unique_num_idx = dict()
tooltips = dict()

_instance = None
Expand Down Expand Up @@ -57,13 +57,13 @@ def load_data(self):
data = json.load(f)
for key, d in data.items():
self.aspect_dict[key] = d["desc"]
self.aspect_snoids[key] = d["snoId"]
self.aspect_num_idx[key] = d["num_idx"]

with open(f"assets/lang/{Config().general['language']}/uniques.json", "r") as f:
data = json.load(f)
for key, d in data.items():
self.aspect_unique_dict[key] = d["desc"]
self.aspect_unique_snoids[key] = d["snoId"]
self.aspect_unique_num_idx[key] = d["num_idx"]

with open(f"assets/lang/{Config().general['language']}/affixes.json", "r", encoding="utf-8") as f:
self.affix_dict: dict = json.load(f)
Expand Down
98 changes: 0 additions & 98 deletions src/item/descr/aspect_num_idx.py

This file was deleted.

16 changes: 7 additions & 9 deletions src/item/descr/find_aspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import json
from config import Config
from template_finder import TemplateMatch
from item.descr.aspect_num_idx import ASPECT_NUMBER_AT_IDX1, ASPECT_NUMBER_AT_IDX2
from item.data.aspect import Aspect
from item.data.rarity import ItemRarity
from item.data.item_type import ItemType
Expand All @@ -29,20 +28,19 @@ def find_aspect(

if rarity == ItemRarity.Legendary:
found_key = closest_match(cleaned_str, Dataloader().aspect_dict)
snoids = Dataloader().aspect_snoids
num_idx = Dataloader().aspect_num_idx
else:
found_key = closest_match(cleaned_str, Dataloader().aspect_unique_dict)
snoids = Dataloader().aspect_unique_snoids
num_idx = Dataloader().aspect_unique_num_idx

if found_key is None:
return None, cleaned_str

if snoids[found_key] in ASPECT_NUMBER_AT_IDX1:
idx = 1
elif snoids[found_key] in ASPECT_NUMBER_AT_IDX2:
idx = 2
else:
idx = 0
idx = 0
if len(num_idx[found_key]) > 0:
# TODO: Some aspects have two values that do not scale with each other
# Save both such values
idx = num_idx[found_key][0]
found_value = find_number(concatenated_str, idx)

# Scale the aspect down to the canonical range if found on an item that scales it up
Expand Down
23 changes: 21 additions & 2 deletions src/tools/gen_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ def remove_content_in_braces(input_string) -> str:
return result


def get_random_number_idx(s: str) -> list[int]:
filtered_string = re.findall(r"\{c_random\}|\{c_number\}", s)
res = []
for i, val in enumerate(filtered_string):
if val == "{c_random}":
res.append(i)
return res


def check_ms(input_string) -> str:
start_index = input_string.find("[ms]")
end_index = input_string.find("[fs]")
Expand Down Expand Up @@ -75,7 +84,8 @@ def main(d4data_dir: Path, companion_app_dir: Path):
aspect_name_clean = check_ms(aspect_name_clean)
aspect_desc = data["arStrings"][desc_idx]["szText"]
aspect_descr_clean = remove_content_in_braces(aspect_desc.lower().replace("’", ""))
aspects_dict[aspect_name_clean] = {"desc": aspect_descr_clean, "snoId": snoId}
num_idx = get_random_number_idx(aspect_desc)
aspects_dict[aspect_name_clean] = {"desc": aspect_descr_clean, "snoId": snoId, "full": aspect_desc, "num_idx": num_idx}

with open(f"assets/lang/{language}/aspects.json", "w", encoding="utf-8") as json_file:
json.dump(aspects_dict, json_file, indent=4, ensure_ascii=False)
Expand Down Expand Up @@ -104,7 +114,8 @@ def main(d4data_dir: Path, companion_app_dir: Path):
data = json.load(affix_file)
desc = data["arStrings"][0]["szText"]
desc_clean = remove_content_in_braces(desc.lower().replace("’", ""))
unique_dict[name_clean] = {"desc": desc_clean, "snoId": snoId}
num_idx = get_random_number_idx(desc)
unique_dict[name_clean] = {"desc": desc_clean, "snoId": snoId, "full": desc, "num_idx": num_idx}

with open(f"assets/lang/{language}/uniques.json", "w", encoding="utf-8") as json_file:
json.dump(unique_dict, json_file, indent=4, ensure_ascii=False)
Expand All @@ -118,6 +129,14 @@ def main(d4data_dir: Path, companion_app_dir: Path):
"major": {},
"positive": {},
}

# Add season specific ones
if language == "enUS":
sigil_dict["dungeons"]["vault_of_copper"] = "vault of copper"
sigil_dict["dungeons"]["vault_of_cinder"] = "vault of cinder"
sigil_dict["dungeons"]["vault_of_ink"] = "vault of ink"
sigil_dict["dungeons"]["vault_of_stone"] = "vault of stone"
# Add others automatically
pattern = f"json/{language}_Text/meta/StringList/world_DGN_*.stl.json"
json_files = list(d4data_dir.glob(pattern))
for json_file in json_files:
Expand Down

0 comments on commit f425d89

Please sign in to comment.