Skip to content

Commit

Permalink
Core: fix item_name_groups unfolding in item links (ArchipelagoMW#3088)
Browse files Browse the repository at this point in the history
  • Loading branch information
alwaysintreble authored and AustinSumigray committed Jan 4, 2025
1 parent 817510d commit 14d61bb
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
1 change: 1 addition & 0 deletions Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -1124,6 +1124,7 @@ def verify(self, world: typing.Type[World], player_name: str, plando_options: "P
raise Exception(f"item_link {link['name']} has {intersection} "
f"items in both its local_items and non_local_items pool.")
link.setdefault("link_replacement", None)
link["item_pool"] = list(pool)


class Removed(FreeText):
Expand Down
30 changes: 30 additions & 0 deletions test/general/test_options.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import unittest

from BaseClasses import PlandoOptions
from Options import ItemLinks
from worlds.AutoWorld import AutoWorldRegister


Expand All @@ -17,3 +20,30 @@ def test_options_are_not_set_by_world(self):
with self.subTest(game=gamename):
self.assertFalse(hasattr(world_type, "options"),
f"Unexpected assignment to {world_type.__name__}.options!")

def test_item_links_name_groups(self):
"""Tests that item links successfully unfold item_name_groups"""
item_link_groups = [
[{
"name": "ItemLinkGroup",
"item_pool": ["Everything"],
"link_replacement": False,
"replacement_item": None,
}],
[{
"name": "ItemLinkGroup",
"item_pool": ["Hammer", "Bow"],
"link_replacement": False,
"replacement_item": None,
}]
]
# we really need some sort of test world but generic doesn't have enough items for this
world = AutoWorldRegister.world_types["A Link to the Past"]
plando_options = PlandoOptions.from_option_string("bosses")
item_links = [ItemLinks.from_any(item_link_groups[0]), ItemLinks.from_any(item_link_groups[1])]
for link in item_links:
link.verify(world, "tester", plando_options)
self.assertIn("Hammer", link.value[0]["item_pool"])
self.assertIn("Bow", link.value[0]["item_pool"])

# TODO test that the group created using these options has the items

0 comments on commit 14d61bb

Please sign in to comment.