diff options
Diffstat (limited to 'apworld')
-rw-r--r-- | apworld/player_logic.py | 4 | ||||
-rw-r--r-- | apworld/regions.py | 2 | ||||
-rw-r--r-- | apworld/static_logic.py | 20 |
3 files changed, 20 insertions, 6 deletions
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: | |||
101 | self.locations_by_room.setdefault(mastery.room_id, []).append(PlayerLocation(mastery.ap_id, | 101 | self.locations_by_room.setdefault(mastery.room_id, []).append(PlayerLocation(mastery.ap_id, |
102 | AccessRequirements())) | 102 | AccessRequirements())) |
103 | 103 | ||
104 | for ending in world.static_logic.objects.endings: | ||
105 | self.locations_by_room.setdefault(ending.room_id, []).append(PlayerLocation(ending.ap_id, | ||
106 | AccessRequirements())) | ||
107 | |||
104 | def get_panel_reqs(self, panel_id: int, answer: str | None) -> AccessRequirements: | 108 | def get_panel_reqs(self, panel_id: int, answer: str | None) -> AccessRequirements: |
105 | if answer is None: | 109 | if answer is None: |
106 | if panel_id not in self.panel_reqs: | 110 | 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"): | |||
30 | region = create_region(room, world) | 30 | region = create_region(room, world) |
31 | regions[region.name] = region | 31 | regions[region.name] = region |
32 | 32 | ||
33 | regions["Menu"].connect(regions["the_entry - Starting Room"], "Start Game") | 33 | regions["Menu"].connect(regions["The Entry - Starting Room"], "Start Game") |
34 | 34 | ||
35 | # TODO: The requirements of the opposite trigger also matter. | 35 | # TODO: The requirements of the opposite trigger also matter. |
36 | for connection in world.static_logic.objects.connections: | 36 | 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: | |||
18 | 18 | ||
19 | for door in self.objects.doors: | 19 | for door in self.objects.doors: |
20 | if door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: | 20 | if door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: |
21 | location_name = f"{self.objects.maps[door.map_id].name} - {door.name}" | 21 | location_name = f"{self.get_map_object_map_name(door)} - {door.name}" |
22 | self.location_id_to_name[door.ap_id] = location_name | 22 | self.location_id_to_name[door.ap_id] = location_name |
23 | 23 | ||
24 | if door.type not in [data_pb2.DoorType.EVENT, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: | 24 | if door.type not in [data_pb2.DoorType.EVENT, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: |
@@ -27,16 +27,20 @@ class Lingo2StaticLogic: | |||
27 | 27 | ||
28 | for letter in self.objects.letters: | 28 | for letter in self.objects.letters: |
29 | letter_name = f"{letter.key.upper()}{'2' if letter.level2 else '1'}" | 29 | letter_name = f"{letter.key.upper()}{'2' if letter.level2 else '1'}" |
30 | location_name = f"{self.objects.maps[self.objects.rooms[letter.room_id].map_id].name} - {letter_name}" | 30 | location_name = f"{self.get_room_object_map_name(letter)} - {letter_name}" |
31 | self.location_id_to_name[letter.ap_id] = location_name | 31 | self.location_id_to_name[letter.ap_id] = location_name |
32 | 32 | ||
33 | if not letter.level2: | 33 | if not letter.level2: |
34 | self.item_id_to_name[letter.ap_id] = letter_name | 34 | self.item_id_to_name[letter.ap_id] = letter_name |
35 | 35 | ||
36 | for mastery in self.objects.masteries: | 36 | for mastery in self.objects.masteries: |
37 | location_name = f"{self.objects.maps[self.objects.rooms[mastery.room_id].map_id].name} - Mastery" | 37 | location_name = f"{self.get_room_object_map_name(mastery)} - Mastery" |
38 | self.location_id_to_name[mastery.ap_id] = location_name | 38 | self.location_id_to_name[mastery.ap_id] = location_name |
39 | 39 | ||
40 | for ending in self.objects.endings: | ||
41 | location_name = f"{self.get_room_object_map_name(ending)} - {ending.name.title()} Ending" | ||
42 | self.location_id_to_name[ending.ap_id] = location_name | ||
43 | |||
40 | self.item_id_to_name[self.objects.special_ids["Nothing"]] = "Nothing" | 44 | self.item_id_to_name[self.objects.special_ids["Nothing"]] = "Nothing" |
41 | 45 | ||
42 | self.item_name_to_id = {name: ap_id for ap_id, name in self.item_id_to_name.items()} | 46 | 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: | |||
44 | 48 | ||
45 | def get_door_item_name(self, door_id: int) -> str: | 49 | def get_door_item_name(self, door_id: int) -> str: |
46 | door = self.objects.doors[door_id] | 50 | door = self.objects.doors[door_id] |
47 | return f"{self.objects.maps[door.map_id].name} - {door.name}" | 51 | return f"{self.get_map_object_map_name(door)} - {door.name}" |
48 | 52 | ||
49 | def get_room_region_name(self, room_id: int) -> str: | 53 | def get_room_region_name(self, room_id: int) -> str: |
50 | room = self.objects.rooms[room_id] | 54 | room = self.objects.rooms[room_id] |
51 | return f"{self.objects.maps[room.map_id].name} - {room.name}" | 55 | return f"{self.get_map_object_map_name(room)} - {room.name}" |
56 | |||
57 | def get_map_object_map_name(self, obj) -> str: | ||
58 | return self.objects.maps[obj.map_id].display_name | ||
59 | |||
60 | def get_room_object_map_name(self, obj) -> str: | ||
61 | return self.get_map_object_map_name(self.objects.rooms[obj.room_id]) | ||