From 53e0509fcb20cc824e3fe5b3d3a826f09fc9c166 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 27 Sep 2025 21:06:32 -0400 Subject: Treat worldports as items for tracker --- apworld/tracker.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'apworld/tracker.py') diff --git a/apworld/tracker.py b/apworld/tracker.py index 2c3d0f3..cf2dbe1 100644 --- a/apworld/tracker.py +++ b/apworld/tracker.py @@ -21,6 +21,7 @@ class Tracker: collected_items: dict[int, int] checked_locations: set[int] accessible_locations: set[int] + accessible_worldports: set[int] state: CollectionState @@ -29,6 +30,7 @@ class Tracker: self.collected_items = {} self.checked_locations = set() self.accessible_locations = set() + self.accessible_worldports = set() def setup_slot(self, slot_data): Lingo2World.for_tracker = True @@ -84,12 +86,21 @@ class Tracker: self.state.collect(Lingo2Item(k.upper(), ItemClassification.progression, None, PLAYER_NUM), prevent_sweep=True) + for port_id in self.manager.worldports: + self.state.collect(Lingo2Item(f"Worldport {port_id} Entered", ItemClassification.progression, None, + PLAYER_NUM), prevent_sweep=True) + self.state.sweep_for_advancements() self.accessible_locations = set() + self.accessible_worldports = set() for region in self.state.reachable_regions[PLAYER_NUM]: for location in region.locations: - if location.address not in self.checked_locations and location.access_rule(self.state): + if location.access_rule(self.state): if location.address is not None: - self.accessible_locations.add(location.address) + if location.address not in self.checked_locations: + self.accessible_locations.add(location.address) + elif hasattr(location, "port_id"): + if location.port_id not in self.manager.worldports: + self.accessible_worldports.add(location.port_id) -- cgit 1.4.1