From bcf503855107404ab3c8e0a7edd750c2720f8024 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 20 Aug 2025 15:28:40 -0400 Subject: Maps have display names now Also added endings to the apworld. --- apworld/player_logic.py | 4 ++++ apworld/regions.py | 2 +- apworld/static_logic.py | 20 +++++++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) (limited to 'apworld') diff --git a/apworld/player_logic.py b/apworld/player_logic.py index f67d7f9..455e24f 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py @@ -101,6 +101,10 @@ class Lingo2PlayerLogic: self.locations_by_room.setdefault(mastery.room_id, []).append(PlayerLocation(mastery.ap_id, AccessRequirements())) + for ending in world.static_logic.objects.endings: + self.locations_by_room.setdefault(ending.room_id, []).append(PlayerLocation(ending.ap_id, + AccessRequirements())) + def get_panel_reqs(self, panel_id: int, answer: str | None) -> AccessRequirements: if answer is None: if panel_id not in self.panel_reqs: diff --git a/apworld/regions.py b/apworld/regions.py index 14fcaac..1c8e672 100644 --- a/apworld/regions.py +++ b/apworld/regions.py @@ -30,7 +30,7 @@ def create_regions(world: "Lingo2World"): region = create_region(room, world) regions[region.name] = region - regions["Menu"].connect(regions["the_entry - Starting Room"], "Start Game") + regions["Menu"].connect(regions["The Entry - Starting Room"], "Start Game") # TODO: The requirements of the opposite trigger also matter. for connection in world.static_logic.objects.connections: diff --git a/apworld/static_logic.py b/apworld/static_logic.py index 9cd3ced..965ce3e 100644 --- a/apworld/static_logic.py +++ b/apworld/static_logic.py @@ -18,7 +18,7 @@ class Lingo2StaticLogic: for door in self.objects.doors: if door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: - location_name = f"{self.objects.maps[door.map_id].name} - {door.name}" + location_name = f"{self.get_map_object_map_name(door)} - {door.name}" self.location_id_to_name[door.ap_id] = location_name if door.type not in [data_pb2.DoorType.EVENT, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: @@ -27,16 +27,20 @@ class Lingo2StaticLogic: for letter in self.objects.letters: letter_name = f"{letter.key.upper()}{'2' if letter.level2 else '1'}" - location_name = f"{self.objects.maps[self.objects.rooms[letter.room_id].map_id].name} - {letter_name}" + location_name = f"{self.get_room_object_map_name(letter)} - {letter_name}" self.location_id_to_name[letter.ap_id] = location_name if not letter.level2: self.item_id_to_name[letter.ap_id] = letter_name for mastery in self.objects.masteries: - location_name = f"{self.objects.maps[self.objects.rooms[mastery.room_id].map_id].name} - Mastery" + location_name = f"{self.get_room_object_map_name(mastery)} - Mastery" self.location_id_to_name[mastery.ap_id] = location_name + for ending in self.objects.endings: + location_name = f"{self.get_room_object_map_name(ending)} - {ending.name.title()} Ending" + self.location_id_to_name[ending.ap_id] = location_name + self.item_id_to_name[self.objects.special_ids["Nothing"]] = "Nothing" self.item_name_to_id = {name: ap_id for ap_id, name in self.item_id_to_name.items()} @@ -44,8 +48,14 @@ class Lingo2StaticLogic: def get_door_item_name(self, door_id: int) -> str: door = self.objects.doors[door_id] - return f"{self.objects.maps[door.map_id].name} - {door.name}" + return f"{self.get_map_object_map_name(door)} - {door.name}" def get_room_region_name(self, room_id: int) -> str: room = self.objects.rooms[room_id] - return f"{self.objects.maps[room.map_id].name} - {room.name}" + return f"{self.get_map_object_map_name(room)} - {room.name}" + + def get_map_object_map_name(self, obj) -> str: + return self.objects.maps[obj.map_id].display_name + + def get_room_object_map_name(self, obj) -> str: + return self.get_map_object_map_name(self.objects.rooms[obj.room_id]) -- cgit 1.4.1