summary refs log tree commit diff stats
path: root/apworld
diff options
context:
space:
mode:
Diffstat (limited to 'apworld')
-rw-r--r--apworld/player_logic.py4
-rw-r--r--apworld/regions.py2
-rw-r--r--apworld/static_logic.py20
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])