diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-08 14:11:23 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-08 14:11:23 -0400 |
| commit | 57a08a321bb1054107afd7b91bc6c77cba5abf32 (patch) | |
| tree | 29675215fcdaa37cba6ee20fd23b179bc635b267 | |
| parent | 0aa1b7c005edc97323f3e1cbbe591d9064a73475 (diff) | |
| download | lingo2-archipelago-57a08a321bb1054107afd7b91bc6c77cba5abf32.tar.gz lingo2-archipelago-57a08a321bb1054107afd7b91bc6c77cba5abf32.tar.bz2 lingo2-archipelago-57a08a321bb1054107afd7b91bc6c77cba5abf32.zip | |
Added lavender cubes logic
| -rw-r--r-- | apworld/player_logic.py | 3 | ||||
| -rw-r--r-- | data/door_groups.txtpb | 20 | ||||
| -rw-r--r-- | data/ids.yaml | 3 | ||||
| -rw-r--r-- | data/maps/daedalus/doors.txtpb | 8 | ||||
| -rw-r--r-- | data/maps/the_ancient/doors.txtpb | 3 | ||||
| -rw-r--r-- | data/maps/the_ancient/rooms/Inside.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_congruent/doors.txtpb | 8 | ||||
| -rw-r--r-- | data/maps/the_great/doors.txtpb | 8 | ||||
| -rw-r--r-- | data/maps/the_parthenon/doors.txtpb | 7 | ||||
| -rw-r--r-- | proto/data.proto | 4 | ||||
| -rw-r--r-- | proto/human.proto | 1 | ||||
| -rw-r--r-- | tools/datapacker/main.cpp | 3 |
12 files changed, 53 insertions, 16 deletions
| diff --git a/apworld/player_logic.py b/apworld/player_logic.py index 317d13b..c94b809 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py | |||
| @@ -130,6 +130,9 @@ class Lingo2PlayerLogic: | |||
| 130 | elif door_group.type == data_pb2.DoorGroupType.COLOR_CONNECTOR: | 130 | elif door_group.type == data_pb2.DoorGroupType.COLOR_CONNECTOR: |
| 131 | if not self.world.options.shuffle_control_center_colors: | 131 | if not self.world.options.shuffle_control_center_colors: |
| 132 | continue | 132 | continue |
| 133 | elif door_group.type == data_pb2.DoorGroupType.SHUFFLE_GROUP: | ||
| 134 | if not self.world.options.shuffle_doors: | ||
| 135 | continue | ||
| 133 | else: | 136 | else: |
| 134 | continue | 137 | continue |
| 135 | 138 | ||
| diff --git a/data/door_groups.txtpb b/data/door_groups.txtpb index a90bc9a..1a75c45 100644 --- a/data/door_groups.txtpb +++ b/data/door_groups.txtpb | |||
| @@ -138,3 +138,23 @@ door_groups { | |||
| 138 | name: "Cyan Doors" | 138 | name: "Cyan Doors" |
| 139 | } | 139 | } |
| 140 | } | 140 | } |
| 141 | door_groups { | ||
| 142 | name: "Lavender Cubes" | ||
| 143 | type: SHUFFLE_GROUP | ||
| 144 | doors { | ||
| 145 | map: "daedalus" | ||
| 146 | name: "C Keyholder Blocker" | ||
| 147 | } | ||
| 148 | doors { | ||
| 149 | map: "the_congruent" | ||
| 150 | name: "T Keyholder Blocker" | ||
| 151 | } | ||
| 152 | doors { | ||
| 153 | map: "the_great" | ||
| 154 | name: "Lavender Cube" | ||
| 155 | } | ||
| 156 | doors { | ||
| 157 | map: "the_parthenon" | ||
| 158 | name: "Lavender Cubes" | ||
| 159 | } | ||
| 160 | } | ||
| diff --git a/data/ids.yaml b/data/ids.yaml index 4e2cd66..e2ec985 100644 --- a/data/ids.yaml +++ b/data/ids.yaml | |||
| @@ -1484,7 +1484,6 @@ maps: | |||
| 1484 | Obverse Magenta Door: 173 | 1484 | Obverse Magenta Door: 173 |
| 1485 | Obverse Yellow Door: 178 | 1485 | Obverse Yellow Door: 178 |
| 1486 | Obverse Yellow Puzzles: 179 | 1486 | Obverse Yellow Puzzles: 179 |
| 1487 | T Keyholder Blocker: 183 | ||
| 1488 | the_darkroom: | 1487 | the_darkroom: |
| 1489 | rooms: | 1488 | rooms: |
| 1490 | First Room: | 1489 | First Room: |
| @@ -2084,7 +2083,6 @@ maps: | |||
| 2084 | Into The Mouth Gravestone: 457 | 2083 | Into The Mouth Gravestone: 457 |
| 2085 | Invisible Entrance: 465 | 2084 | Invisible Entrance: 465 |
| 2086 | Jail Entrance: 451 | 2085 | Jail Entrance: 451 |
| 2087 | Lavender Cube: 469 | ||
| 2088 | Magnet Room Entrance: 449 | 2086 | Magnet Room Entrance: 449 |
| 2089 | Nature Room Door: 466 | 2087 | Nature Room Door: 466 |
| 2090 | Nature Room Panels: 467 | 2088 | Nature Room Panels: 467 |
| @@ -3847,5 +3845,6 @@ door_groups: | |||
| 3847 | Control Center Purple Doors: 2785 | 3845 | Control Center Purple Doors: 2785 |
| 3848 | Control Center White Doors: 2784 | 3846 | Control Center White Doors: 2784 |
| 3849 | Cyan Doors: 2789 | 3847 | Cyan Doors: 2789 |
| 3848 | Lavender Cubes: 2790 | ||
| 3850 | The Entry - Repetitive Entrance: 2782 | 3849 | The Entry - Repetitive Entrance: 2782 |
| 3851 | The Repetitive - Plaza Entrance: 2783 | 3850 | The Repetitive - Plaza Entrance: 2783 |
| diff --git a/data/maps/daedalus/doors.txtpb b/data/maps/daedalus/doors.txtpb index d6c33f4..ccbf3f0 100644 --- a/data/maps/daedalus/doors.txtpb +++ b/data/maps/daedalus/doors.txtpb | |||
| @@ -2112,8 +2112,12 @@ doors { | |||
| 2112 | doors { | 2112 | doors { |
| 2113 | name: "C Keyholder Blocker" | 2113 | name: "C Keyholder Blocker" |
| 2114 | type: EVENT | 2114 | type: EVENT |
| 2115 | # Components/Doors/Unincorporated/temple_foyer_7 | 2115 | receivers: "Components/Doors/Unincorporated/temple_foyer_7" |
| 2116 | switches: "lavender_cubes" | 2116 | panels { |
| 2117 | map: "the_ancient" | ||
| 2118 | room: "Inside" | ||
| 2119 | name: "COLOR" | ||
| 2120 | } | ||
| 2117 | } | 2121 | } |
| 2118 | doors { | 2122 | doors { |
| 2119 | name: "Computer Room Back Door" | 2123 | name: "Computer Room Back Door" |
| diff --git a/data/maps/the_ancient/doors.txtpb b/data/maps/the_ancient/doors.txtpb index 5dc062e..e550306 100644 --- a/data/maps/the_ancient/doors.txtpb +++ b/data/maps/the_ancient/doors.txtpb | |||
| @@ -38,7 +38,8 @@ doors { | |||
| 38 | } | 38 | } |
| 39 | doors { | 39 | doors { |
| 40 | name: "Lavender Cubes" | 40 | name: "Lavender Cubes" |
| 41 | type: STANDARD | 41 | type: LOCATION_ONLY |
| 42 | panels { room: "Inside" name: "COLOR" } | 42 | panels { room: "Inside" name: "COLOR" } |
| 43 | location_room: "Inside" | 43 | location_room: "Inside" |
| 44 | location_name: "COLOR" | ||
| 44 | } | 45 | } |
| diff --git a/data/maps/the_ancient/rooms/Inside.txtpb b/data/maps/the_ancient/rooms/Inside.txtpb index d6e8575..3723b2d 100644 --- a/data/maps/the_ancient/rooms/Inside.txtpb +++ b/data/maps/the_ancient/rooms/Inside.txtpb | |||
| @@ -5,5 +5,4 @@ panels { | |||
| 5 | clue: "color" | 5 | clue: "color" |
| 6 | answer: "lavender" | 6 | answer: "lavender" |
| 7 | symbols: EXAMPLE | 7 | symbols: EXAMPLE |
| 8 | # TODO: how does this connect to the "lavender_cubes" switch? | ||
| 9 | } | 8 | } |
| diff --git a/data/maps/the_congruent/doors.txtpb b/data/maps/the_congruent/doors.txtpb index 7c79c00..a714eba 100644 --- a/data/maps/the_congruent/doors.txtpb +++ b/data/maps/the_congruent/doors.txtpb | |||
| @@ -119,7 +119,11 @@ doors { | |||
| 119 | } | 119 | } |
| 120 | doors { | 120 | doors { |
| 121 | name: "T Keyholder Blocker" | 121 | name: "T Keyholder Blocker" |
| 122 | type: ITEM_ONLY | 122 | type: EVENT |
| 123 | receivers: "Components/Doors/magenta_enterer3" | 123 | receivers: "Components/Doors/magenta_enterer3" |
| 124 | switches: "lavender_cubes" | 124 | panels { |
| 125 | map: "the_ancient" | ||
| 126 | room: "Inside" | ||
| 127 | name: "COLOR" | ||
| 128 | } | ||
| 125 | } | 129 | } |
| diff --git a/data/maps/the_great/doors.txtpb b/data/maps/the_great/doors.txtpb index 0389a38..f0f2fde 100644 --- a/data/maps/the_great/doors.txtpb +++ b/data/maps/the_great/doors.txtpb | |||
| @@ -471,9 +471,13 @@ doors { | |||
| 471 | } | 471 | } |
| 472 | doors { | 472 | doors { |
| 473 | name: "Lavender Cube" | 473 | name: "Lavender Cube" |
| 474 | type: ITEM_ONLY | 474 | type: EVENT |
| 475 | receivers: "Components/Doors/entry_28" | 475 | receivers: "Components/Doors/entry_28" |
| 476 | switches: "lavender_cubes" | 476 | panels { |
| 477 | map: "the_ancient" | ||
| 478 | room: "Inside" | ||
| 479 | name: "COLOR" | ||
| 480 | } | ||
| 477 | } | 481 | } |
| 478 | doors { | 482 | doors { |
| 479 | name: "Zero Entrance" | 483 | name: "Zero Entrance" |
| diff --git a/data/maps/the_parthenon/doors.txtpb b/data/maps/the_parthenon/doors.txtpb index 5187aea..1161917 100644 --- a/data/maps/the_parthenon/doors.txtpb +++ b/data/maps/the_parthenon/doors.txtpb | |||
| @@ -13,7 +13,12 @@ doors { | |||
| 13 | doors { | 13 | doors { |
| 14 | name: "Lavender Cubes" | 14 | name: "Lavender Cubes" |
| 15 | type: EVENT | 15 | type: EVENT |
| 16 | switches: "lavender_cubes" | 16 | receivers: "Components/Doors/entry_3" |
| 17 | panels { | ||
| 18 | map: "the_ancient" | ||
| 19 | room: "Inside" | ||
| 20 | name: "COLOR" | ||
| 21 | } | ||
| 17 | } | 22 | } |
| 18 | doors { | 23 | doors { |
| 19 | name: "K2 Door" | 24 | name: "K2 Door" |
| diff --git a/proto/data.proto b/proto/data.proto index 24b98fe..014cbeb 100644 --- a/proto/data.proto +++ b/proto/data.proto | |||
| @@ -44,6 +44,9 @@ enum DoorGroupType { | |||
| 44 | 44 | ||
| 45 | // Groups with this type become an item if cyan door behavior is set to item. | 45 | // Groups with this type become an item if cyan door behavior is set to item. |
| 46 | CYAN_DOORS = 3; | 46 | CYAN_DOORS = 3; |
| 47 | |||
| 48 | // Groups with this type always become an item if door shuffle is on. | ||
| 49 | SHUFFLE_GROUP = 4; | ||
| 47 | } | 50 | } |
| 48 | 51 | ||
| 49 | enum AxisDirection { | 52 | enum AxisDirection { |
| @@ -119,7 +122,6 @@ message Door { | |||
| 119 | optional uint64 complete_at = 12; | 122 | optional uint64 complete_at = 12; |
| 120 | 123 | ||
| 121 | optional string control_center_color = 6; | 124 | optional string control_center_color = 6; |
| 122 | repeated string switches = 7; | ||
| 123 | repeated KeyholderAnswer keyholders = 13; | 125 | repeated KeyholderAnswer keyholders = 13; |
| 124 | repeated uint64 rooms = 14; | 126 | repeated uint64 rooms = 14; |
| 125 | repeated uint64 doors = 15; | 127 | repeated uint64 doors = 15; |
| diff --git a/proto/human.proto b/proto/human.proto index 89fd076..d48f687 100644 --- a/proto/human.proto +++ b/proto/human.proto | |||
| @@ -86,7 +86,6 @@ message HumanDoor { | |||
| 86 | optional uint64 complete_at = 9; | 86 | optional uint64 complete_at = 9; |
| 87 | 87 | ||
| 88 | optional string control_center_color = 6; | 88 | optional string control_center_color = 6; |
| 89 | repeated string switches = 7; | ||
| 90 | repeated KeyholderIdentifier keyholders = 10; | 89 | repeated KeyholderIdentifier keyholders = 10; |
| 91 | repeated RoomIdentifier rooms = 11; | 90 | repeated RoomIdentifier rooms = 11; |
| 92 | repeated DoorIdentifier doors = 12; | 91 | repeated DoorIdentifier doors = 12; |
| diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index c72462d..c640de6 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp | |||
| @@ -344,9 +344,6 @@ class DataPacker { | |||
| 344 | std::copy( | 344 | std::copy( |
| 345 | h_door.receivers().begin(), h_door.receivers().end(), | 345 | h_door.receivers().begin(), h_door.receivers().end(), |
| 346 | google::protobuf::RepeatedFieldBackInserter(door.mutable_receivers())); | 346 | google::protobuf::RepeatedFieldBackInserter(door.mutable_receivers())); |
| 347 | std::copy( | ||
| 348 | h_door.switches().begin(), h_door.switches().end(), | ||
| 349 | google::protobuf::RepeatedFieldBackInserter(door.mutable_switches())); | ||
| 350 | 347 | ||
| 351 | for (const PaintingIdentifier& pi : h_door.move_paintings()) { | 348 | for (const PaintingIdentifier& pi : h_door.move_paintings()) { |
| 352 | std::optional<std::string> map_name = | 349 | std::optional<std::string> map_name = |
