diff options
| -rw-r--r-- | apworld/options.py | 2 | ||||
| -rw-r--r-- | apworld/player_logic.py | 4 | ||||
| -rw-r--r-- | apworld/static_logic.py | 3 | ||||
| -rw-r--r-- | data/ids.yaml | 3 | ||||
| -rw-r--r-- | data/maps/control_center/rooms/Ancient Entrance.txtpb | 4 | ||||
| -rw-r--r-- | data/maps/daedalus/rooms/Hotel.txtpb | 2 | ||||
| -rw-r--r-- | data/maps/the_butterfly/doors.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_colorful/doors.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_congruent/rooms/C Keyholder.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_congruent/rooms/G Keyholder.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_darkroom/doors.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_entry/doors.txtpb | 2 | ||||
| -rw-r--r-- | data/maps/the_partial/doors.txtpb | 3 | ||||
| -rw-r--r-- | data/maps/the_relentless/doors.txtpb | 6 | ||||
| -rw-r--r-- | proto/data.proto | 3 | ||||
| -rw-r--r-- | tools/validator/validator.cpp | 3 |
16 files changed, 22 insertions, 18 deletions
| diff --git a/apworld/options.py b/apworld/options.py index a56b40d..f687434 100644 --- a/apworld/options.py +++ b/apworld/options.py | |||
| @@ -197,7 +197,7 @@ class MasteriesRequirement(Range): | |||
| 197 | the maximum.""" | 197 | the maximum.""" |
| 198 | display_name = "Masteries Requirement" | 198 | display_name = "Masteries Requirement" |
| 199 | range_start = 0 | 199 | range_start = 0 |
| 200 | range_end = 18 | 200 | range_end = 19 |
| 201 | default = 0 | 201 | default = 0 |
| 202 | 202 | ||
| 203 | 203 | ||
| diff --git a/apworld/player_logic.py b/apworld/player_logic.py index d7b18c2..1d68e4a 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py | |||
| @@ -299,7 +299,8 @@ class Lingo2PlayerLogic: | |||
| 299 | if door.map_id not in self.shuffled_maps: | 299 | if door.map_id not in self.shuffled_maps: |
| 300 | continue | 300 | continue |
| 301 | 301 | ||
| 302 | if door.type in [data_pb2.DoorType.EVENT, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: | 302 | if door.type in [data_pb2.DoorType.EVENT, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE, |
| 303 | data_pb2.DoorType.LEGACY_LOCATION]: | ||
| 303 | continue | 304 | continue |
| 304 | 305 | ||
| 305 | if door.id in self.item_by_door: | 306 | if door.id in self.item_by_door: |
| @@ -511,7 +512,6 @@ class Lingo2PlayerLogic: | |||
| 511 | reqs.possibilities.append(panel_reqs) | 512 | reqs.possibilities.append(panel_reqs) |
| 512 | 513 | ||
| 513 | if door.HasField("control_center_color"): | 514 | if door.HasField("control_center_color"): |
| 514 | # TODO: Logic for ensuring two CC states aren't needed at once. | ||
| 515 | reqs.rooms.add("Control Center - Main Area") | 515 | reqs.rooms.add("Control Center - Main Area") |
| 516 | self.add_solution_reqs(reqs, door.control_center_color) | 516 | self.add_solution_reqs(reqs, door.control_center_color) |
| 517 | 517 | ||
| diff --git a/apworld/static_logic.py b/apworld/static_logic.py index 8e07b82..702f30b 100644 --- a/apworld/static_logic.py +++ b/apworld/static_logic.py | |||
| @@ -31,7 +31,8 @@ class Lingo2StaticLogic: | |||
| 31 | location_name = self.get_door_location_name(door) | 31 | location_name = self.get_door_location_name(door) |
| 32 | self.location_id_to_name[door.ap_id] = location_name | 32 | self.location_id_to_name[door.ap_id] = location_name |
| 33 | 33 | ||
| 34 | if door.type not in [data_pb2.DoorType.EVENT, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE]: | 34 | if door.type not in [data_pb2.DoorType.EVENT, data_pb2.DoorType.LOCATION_ONLY, data_pb2.DoorType.GRAVESTONE, |
| 35 | data_pb2.DoorType.LEGACY_LOCATION]: | ||
| 35 | item_name = self.get_door_item_name(door) | 36 | item_name = self.get_door_item_name(door) |
| 36 | self.item_id_to_name[door.ap_id] = item_name | 37 | self.item_id_to_name[door.ap_id] = item_name |
| 37 | 38 | ||
| diff --git a/data/ids.yaml b/data/ids.yaml index 6a44044..49dd23f 100644 --- a/data/ids.yaml +++ b/data/ids.yaml | |||
| @@ -2789,6 +2789,7 @@ maps: | |||
| 2789 | FINCH: 886 | 2789 | FINCH: 886 |
| 2790 | FOUR: 885 | 2790 | FOUR: 885 |
| 2791 | doors: | 2791 | doors: |
| 2792 | Control Center Entrance: 865 | ||
| 2792 | F Door: 866 | 2793 | F Door: 866 |
| 2793 | L Entered: 2843 | 2794 | L Entered: 2843 |
| 2794 | Main Room Puzzles: 863 | 2795 | Main Room Puzzles: 863 |
| @@ -2974,8 +2975,10 @@ maps: | |||
| 2974 | MORE: 1022 | 2975 | MORE: 1022 |
| 2975 | doors: | 2976 | doors: |
| 2976 | Left Only Puzzles: 3020 | 2977 | Left Only Puzzles: 3020 |
| 2978 | Left/Turn Door: 984 | ||
| 2977 | Shop Only Puzzles: 3019 | 2979 | Shop Only Puzzles: 3019 |
| 2978 | Turn Only Puzzles: 3018 | 2980 | Turn Only Puzzles: 3018 |
| 2981 | Turn/Shop Door: 985 | ||
| 2979 | the_repetitive: | 2982 | the_repetitive: |
| 2980 | rooms: | 2983 | rooms: |
| 2981 | Anti Room: | 2984 | Anti Room: |
| diff --git a/data/maps/control_center/rooms/Ancient Entrance.txtpb b/data/maps/control_center/rooms/Ancient Entrance.txtpb index 5b65d9a..dc018ba 100644 --- a/data/maps/control_center/rooms/Ancient Entrance.txtpb +++ b/data/maps/control_center/rooms/Ancient Entrance.txtpb | |||
| @@ -5,6 +5,8 @@ ports { | |||
| 5 | path: "Components/Warps/worldport8" | 5 | path: "Components/Warps/worldport8" |
| 6 | destination { x: -27 y: 0 z: -34 } | 6 | destination { x: -27 y: 0 z: -34 } |
| 7 | rotation: 90 | 7 | rotation: 90 |
| 8 | # TODO: shuffle entrances with dependent keyholders | 8 | # This is because there's no port on the other side of the connection, so if |
| 9 | # this connection was removed and gallery paintings aren't shuffled then | ||
| 10 | # there'd be no way into The Ancient. | ||
| 9 | no_shuffle: true | 11 | no_shuffle: true |
| 10 | } | 12 | } |
| diff --git a/data/maps/daedalus/rooms/Hotel.txtpb b/data/maps/daedalus/rooms/Hotel.txtpb index d2a05db..d590841 100644 --- a/data/maps/daedalus/rooms/Hotel.txtpb +++ b/data/maps/daedalus/rooms/Hotel.txtpb | |||
| @@ -1,7 +1,5 @@ | |||
| 1 | name: "Hotel" | 1 | name: "Hotel" |
| 2 | panel_display_name: "Southwest Area" | 2 | panel_display_name: "Southwest Area" |
| 3 | # TODO: Something has to be changed in-game so that the puzzles don't disappear | ||
| 4 | # and thus cause them to become unsolvable. | ||
| 5 | panels { | 3 | panels { |
| 6 | name: "MARLIN" | 4 | name: "MARLIN" |
| 7 | path: "Panels/Connections/connections_2" | 5 | path: "Panels/Connections/connections_2" |
| diff --git a/data/maps/the_butterfly/doors.txtpb b/data/maps/the_butterfly/doors.txtpb index 987c269..1ebc3a2 100644 --- a/data/maps/the_butterfly/doors.txtpb +++ b/data/maps/the_butterfly/doors.txtpb | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | # TODO: The gallery painting | ||
| 2 | doors { | 1 | doors { |
| 3 | name: "Panels" | 2 | name: "Panels" |
| 4 | type: EVENT | 3 | type: EVENT |
| diff --git a/data/maps/the_colorful/doors.txtpb b/data/maps/the_colorful/doors.txtpb index 003c9a9..4785cf2 100644 --- a/data/maps/the_colorful/doors.txtpb +++ b/data/maps/the_colorful/doors.txtpb | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | # TODO: gallery painting | ||
| 2 | doors { | 1 | doors { |
| 3 | name: "White Door" | 2 | name: "White Door" |
| 4 | type: STANDARD | 3 | type: STANDARD |
| diff --git a/data/maps/the_congruent/rooms/C Keyholder.txtpb b/data/maps/the_congruent/rooms/C Keyholder.txtpb index 75ef920..d9a8cf2 100644 --- a/data/maps/the_congruent/rooms/C Keyholder.txtpb +++ b/data/maps/the_congruent/rooms/C Keyholder.txtpb | |||
| @@ -2,5 +2,4 @@ name: "C Keyholder" | |||
| 2 | keyholders { | 2 | keyholders { |
| 3 | name: "C" | 3 | name: "C" |
| 4 | path: "Components/KeyHolders/keyHolder" | 4 | path: "Components/KeyHolders/keyHolder" |
| 5 | # TODO: This will need to be modified so that it doesn't actually take the letter. | ||
| 6 | } | 5 | } |
| diff --git a/data/maps/the_congruent/rooms/G Keyholder.txtpb b/data/maps/the_congruent/rooms/G Keyholder.txtpb index 8184703..cd12419 100644 --- a/data/maps/the_congruent/rooms/G Keyholder.txtpb +++ b/data/maps/the_congruent/rooms/G Keyholder.txtpb | |||
| @@ -2,5 +2,4 @@ name: "G Keyholder" | |||
| 2 | keyholders { | 2 | keyholders { |
| 3 | name: "G" | 3 | name: "G" |
| 4 | path: "Components/KeyHolders/keyHolder2" | 4 | path: "Components/KeyHolders/keyHolder2" |
| 5 | # TODO: This will need to be modified so that it doesn't actually take the letter. | ||
| 6 | } | 5 | } |
| diff --git a/data/maps/the_darkroom/doors.txtpb b/data/maps/the_darkroom/doors.txtpb index 047c7d0..c4a47a0 100644 --- a/data/maps/the_darkroom/doors.txtpb +++ b/data/maps/the_darkroom/doors.txtpb | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | # TODO: gallery painting | ||
| 2 | doors { | 1 | doors { |
| 3 | name: "Double Letter Panel Blockers" | 2 | name: "Double Letter Panel Blockers" |
| 4 | type: EVENT | 3 | type: EVENT |
| diff --git a/data/maps/the_entry/doors.txtpb b/data/maps/the_entry/doors.txtpb index 9e6a30f..5bc6f57 100644 --- a/data/maps/the_entry/doors.txtpb +++ b/data/maps/the_entry/doors.txtpb | |||
| @@ -304,7 +304,6 @@ doors { | |||
| 304 | doors { | 304 | doors { |
| 305 | name: "Red Room Painting" | 305 | name: "Red Room Painting" |
| 306 | type: STANDARD | 306 | type: STANDARD |
| 307 | #move_paintings { room: "Right Eye" name: "PSYCHIC" } | ||
| 308 | receivers: "Components/Paintings/psychic/teleportListener" | 307 | receivers: "Components/Paintings/psychic/teleportListener" |
| 309 | panels { room: "Right Eye" name: "FAINT" } | 308 | panels { room: "Right Eye" name: "FAINT" } |
| 310 | location_room: "Right Eye" | 309 | location_room: "Right Eye" |
| @@ -312,7 +311,6 @@ doors { | |||
| 312 | doors { | 311 | doors { |
| 313 | name: "Third Eye Painting" | 312 | name: "Third Eye Painting" |
| 314 | type: LOCATION_ONLY | 313 | type: LOCATION_ONLY |
| 315 | # move_paintings { room: "Eye Room" name: "GALLERY" } | ||
| 316 | # TODO: ummmm | 314 | # TODO: ummmm |
| 317 | panels { room: "Eye Room" name: "I" } | 315 | panels { room: "Eye Room" name: "I" } |
| 318 | location_room: "Eye Room" | 316 | location_room: "Eye Room" |
| diff --git a/data/maps/the_partial/doors.txtpb b/data/maps/the_partial/doors.txtpb index b6445cd..11826ea 100644 --- a/data/maps/the_partial/doors.txtpb +++ b/data/maps/the_partial/doors.txtpb | |||
| @@ -49,9 +49,10 @@ doors { | |||
| 49 | } | 49 | } |
| 50 | doors { | 50 | doors { |
| 51 | name: "Control Center Entrance" | 51 | name: "Control Center Entrance" |
| 52 | type: EVENT | 52 | type: LEGACY_LOCATION |
| 53 | #receivers: "Components/Doors/controlDoor" | 53 | #receivers: "Components/Doors/controlDoor" |
| 54 | panels { room: "Control Center Entrance" name: "RETURN" } | 54 | panels { room: "Control Center Entrance" name: "RETURN" } |
| 55 | location_room: "Control Center Entrance" | ||
| 55 | } | 56 | } |
| 56 | doors { | 57 | doors { |
| 57 | name: "F Door" | 58 | name: "F Door" |
| diff --git a/data/maps/the_relentless/doors.txtpb b/data/maps/the_relentless/doors.txtpb index 727599f..e970e40 100644 --- a/data/maps/the_relentless/doors.txtpb +++ b/data/maps/the_relentless/doors.txtpb | |||
| @@ -26,17 +26,18 @@ doors { | |||
| 26 | } | 26 | } |
| 27 | doors { | 27 | doors { |
| 28 | name: "Left/Turn Door" | 28 | name: "Left/Turn Door" |
| 29 | type: EVENT | 29 | type: LEGACY_LOCATION |
| 30 | panels { room: "Left Room" name: "HIDE" } | 30 | panels { room: "Left Room" name: "HIDE" } |
| 31 | panels { room: "Left Room" name: "LEFT" } | 31 | panels { room: "Left Room" name: "LEFT" } |
| 32 | panels { room: "Left Room" name: "MORE" } | 32 | panels { room: "Left Room" name: "MORE" } |
| 33 | panels { room: "Turn Room" name: "HIDE (1)" } | 33 | panels { room: "Turn Room" name: "HIDE (1)" } |
| 34 | panels { room: "Turn Room" name: "HIDE (2)" } | 34 | panels { room: "Turn Room" name: "HIDE (2)" } |
| 35 | panels { room: "Turn Room" name: "MORE" } | 35 | panels { room: "Turn Room" name: "MORE" } |
| 36 | location_room: "Turn Room" | ||
| 36 | } | 37 | } |
| 37 | doors { | 38 | doors { |
| 38 | name: "Turn/Shop Door" | 39 | name: "Turn/Shop Door" |
| 39 | type: EVENT | 40 | type: LEGACY_LOCATION |
| 40 | panels { room: "Turn Room" name: "HIDE (1)" } | 41 | panels { room: "Turn Room" name: "HIDE (1)" } |
| 41 | panels { room: "Turn Room" name: "HIDE (2)" } | 42 | panels { room: "Turn Room" name: "HIDE (2)" } |
| 42 | panels { room: "Turn Room" name: "MORE" } | 43 | panels { room: "Turn Room" name: "MORE" } |
| @@ -45,6 +46,7 @@ doors { | |||
| 45 | panels { room: "Shop Room" name: "EXIT (1)" } | 46 | panels { room: "Shop Room" name: "EXIT (1)" } |
| 46 | panels { room: "Shop Room" name: "EXIT (2)" } | 47 | panels { room: "Shop Room" name: "EXIT (2)" } |
| 47 | panels { room: "Shop Room" name: "EXIT (3)" } | 48 | panels { room: "Shop Room" name: "EXIT (3)" } |
| 49 | location_room: "Turn Room" | ||
| 48 | } | 50 | } |
| 49 | doors { | 51 | doors { |
| 50 | name: "All Doors" | 52 | name: "All Doors" |
| diff --git a/proto/data.proto b/proto/data.proto index b46ab99..d84c598 100644 --- a/proto/data.proto +++ b/proto/data.proto | |||
| @@ -30,6 +30,9 @@ enum DoorType { | |||
| 30 | 30 | ||
| 31 | // This door is never a location, and is an item as long as gallery painting shuffle is on. | 31 | // This door is never a location, and is an item as long as gallery painting shuffle is on. |
| 32 | GALLERY_PAINTING = 7; | 32 | GALLERY_PAINTING = 7; |
| 33 | |||
| 34 | // This location is not added to new worlds, but the client can send it out for backwards compataibility purposes. | ||
| 35 | LEGACY_LOCATION = 8; | ||
| 33 | } | 36 | } |
| 34 | 37 | ||
| 35 | enum DoorGroupType { | 38 | enum DoorGroupType { |
| diff --git a/tools/validator/validator.cpp b/tools/validator/validator.cpp index e1fc138..5f8e0ba 100644 --- a/tools/validator/validator.cpp +++ b/tools/validator/validator.cpp | |||
| @@ -227,7 +227,8 @@ class Validator { | |||
| 227 | 227 | ||
| 228 | if (h_door.type() == DoorType::STANDARD || | 228 | if (h_door.type() == DoorType::STANDARD || |
| 229 | h_door.type() == DoorType::LOCATION_ONLY || | 229 | h_door.type() == DoorType::LOCATION_ONLY || |
| 230 | h_door.type() == DoorType::GRAVESTONE) { | 230 | h_door.type() == DoorType::GRAVESTONE || |
| 231 | h_door.type() == DoorType::LEGACY_LOCATION) { | ||
| 231 | if (h_door.double_letters()) { | 232 | if (h_door.double_letters()) { |
| 232 | std::cout << "Door " << door_identifier.ShortDebugString() | 233 | std::cout << "Door " << door_identifier.ShortDebugString() |
| 233 | << " is a location that depends on double_letters." | 234 | << " is a location that depends on double_letters." |
