diff --git a/worlds/ff6wc/item_rewards.py b/worlds/ff6wc/item_rewards.py index f823d84ae160..4287675ac72f 100644 --- a/worlds/ff6wc/item_rewards.py +++ b/worlds/ff6wc/item_rewards.py @@ -1,4 +1,5 @@ from collections.abc import Mapping +from functools import cache from random import Random from BaseClasses import ItemClassification, Location @@ -91,6 +92,7 @@ def build_ir_from_placements(wc_event_locations: list[Location]) -> list[str]: return [] +@cache def item_qualities() -> Mapping[int, int]: """ to be able to sort items by quality """ from . import FF6WCWorld @@ -109,6 +111,12 @@ def item_qualities() -> Mapping[int, int]: for item_tier, key in zip(tiers, sort_keys, strict=True): for wc_id in item_tier: qualities[wc_id] = key + + # Add items not present in chest_item_tiers + qualities[Rom.item_name_id["Cursed Shld"]] = 1 + qualities[Rom.item_name_id["ArchplgoItem"]] = 1 + qualities[Rom.item_name_id["Empty"]] = 10 + return qualities diff --git a/worlds/ff6wc/test/test_item_rewards.py b/worlds/ff6wc/test/test_item_rewards.py new file mode 100644 index 000000000000..1979086edee9 --- /dev/null +++ b/worlds/ff6wc/test/test_item_rewards.py @@ -0,0 +1,11 @@ +from worlds.ff6wc.item_rewards import item_qualities +from worlds.ff6wc import Rom + + +def test_qualities_has_all_ids() -> None: + """ All the Worlds Collide item IDs should be in the item qualities mapping. """ + qualities = item_qualities() + + assert all(item_id in qualities for item_id in Rom.item_name_id.values()), [ + item_name for item_name, item_id in Rom.item_name_id.items() if item_id not in qualities + ]