From 462a547f78080fbd371c318945352bf9a08001bb Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Tue, 16 Sep 2025 16:59:51 -0400 Subject: [Apworld] Fix indirect conditions for deep reqs --- apworld/player_logic.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'apworld/player_logic.py') diff --git a/apworld/player_logic.py b/apworld/player_logic.py index ce6ae24..4aa481d 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py @@ -144,6 +144,29 @@ class AccessRequirements: if resimplify: self.simplify() + def get_referenced_rooms(self): + result = set(self.rooms) + + for disjunction in self.or_logic: + for sub_req in disjunction: + result = result.union(sub_req.get_referenced_rooms()) + + for sub_req in self.possibilities: + result = result.union(sub_req.get_referenced_rooms()) + + return result + + def remove_room(self, room: str): + if room in self.rooms: + self.rooms.remove(room) + + for disjunction in self.or_logic: + for sub_req in disjunction: + sub_req.remove_room(room) + + for sub_req in self.possibilities: + sub_req.remove_room(room) + def __repr__(self): parts = [] if len(self.items) > 0: -- cgit 1.4.1