about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2026-02-04 11:31:28 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2026-02-04 11:31:28 -0500
commit45776a759271e50864a2fa77c321c25acc48a016 (patch)
tree672a24729abd275efdd9814dbf0e93cd84aaca19
parente85fdc9f4175a232ad0891e886f93cde83c34f6c (diff)
downloadlingo2-archipelago-45776a759271e50864a2fa77c321c25acc48a016.tar.gz
lingo2-archipelago-45776a759271e50864a2fa77c321c25acc48a016.tar.bz2
lingo2-archipelago-45776a759271e50864a2fa77c321c25acc48a016.zip
Ensure rainbow rooms entrance is always an item
-rw-r--r--apworld/player_logic.py3
-rw-r--r--data/maps/daedalus/doors.txtpb1
-rw-r--r--proto/data.proto1
-rw-r--r--proto/human.proto1
-rw-r--r--tools/datapacker/main.cpp4
5 files changed, 9 insertions, 1 deletions
diff --git a/apworld/player_logic.py b/apworld/player_logic.py index aea7698..d3518d9 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py
@@ -323,7 +323,8 @@ class Lingo2PlayerLogic:
323 continue 323 continue
324 324
325 if (door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.ITEM_ONLY] and 325 if (door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.ITEM_ONLY] and
326 not self.world.options.shuffle_doors): 326 not self.world.options.shuffle_doors and
327 not (door.daedalus_only_always_item and self.world.options.daedalus_only)):
327 continue 328 continue
328 329
329 if (door.type == data_pb2.DoorType.CONTROL_CENTER_COLOR and 330 if (door.type == data_pb2.DoorType.CONTROL_CENTER_COLOR and
diff --git a/data/maps/daedalus/doors.txtpb b/data/maps/daedalus/doors.txtpb index f2f4592..c44792e 100644 --- a/data/maps/daedalus/doors.txtpb +++ b/data/maps/daedalus/doors.txtpb
@@ -1538,6 +1538,7 @@ doors {
1538 type: ITEM_ONLY 1538 type: ITEM_ONLY
1539 receivers: "Components/Doors/Color Reading/door_2" 1539 receivers: "Components/Doors/Color Reading/door_2"
1540 panels { room: "Rainbow Start" name: "PAINTING" } 1540 panels { room: "Rainbow Start" name: "PAINTING" }
1541 daedalus_only_always_item: true
1541} 1542}
1542doors { 1543doors {
1543 name: "Red Rainbow Room" 1544 name: "Red Rainbow Room"
diff --git a/proto/data.proto b/proto/data.proto index d6cc8cb..de20128 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -166,6 +166,7 @@ message Door {
166 166
167 optional string location_name = 17; 167 optional string location_name = 17;
168 optional bool daedalus_only_allow = 22; 168 optional bool daedalus_only_allow = 22;
169 optional bool daedalus_only_always_item = 23;
169} 170}
170 171
171message PanelData { 172message PanelData {
diff --git a/proto/human.proto b/proto/human.proto index 73a3ed3..2d3dbb6 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -126,6 +126,7 @@ message HumanDoor {
126 optional bool legacy_location = 18; 126 optional bool legacy_location = 18;
127 127
128 optional bool daedalus_only_allow = 19; 128 optional bool daedalus_only_allow = 19;
129 optional bool daedalus_only_always_item = 20;
129} 130}
130 131
131message HumanDoors { 132message HumanDoors {
diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 9808a98..349e895 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp
@@ -453,6 +453,10 @@ class DataPacker {
453 if (h_door.has_daedalus_only_allow()) { 453 if (h_door.has_daedalus_only_allow()) {
454 door.set_daedalus_only_allow(h_door.daedalus_only_allow()); 454 door.set_daedalus_only_allow(h_door.daedalus_only_allow());
455 } 455 }
456
457 if (h_door.has_daedalus_only_always_item()) {
458 door.set_daedalus_only_always_item(h_door.daedalus_only_always_item());
459 }
456 } 460 }
457 461
458 void ProcessConnectionsFile(std::filesystem::path path, 462 void ProcessConnectionsFile(std::filesystem::path path,