From 45776a759271e50864a2fa77c321c25acc48a016 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 4 Feb 2026 11:31:28 -0500 Subject: Ensure rainbow rooms entrance is always an item --- apworld/player_logic.py | 3 ++- data/maps/daedalus/doors.txtpb | 1 + proto/data.proto | 1 + proto/human.proto | 1 + tools/datapacker/main.cpp | 4 ++++ 5 files changed, 9 insertions(+), 1 deletion(-) 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: continue if (door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.ITEM_ONLY] and - not self.world.options.shuffle_doors): + not self.world.options.shuffle_doors and + not (door.daedalus_only_always_item and self.world.options.daedalus_only)): continue 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 { type: ITEM_ONLY receivers: "Components/Doors/Color Reading/door_2" panels { room: "Rainbow Start" name: "PAINTING" } + daedalus_only_always_item: true } doors { 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 { optional string location_name = 17; optional bool daedalus_only_allow = 22; + optional bool daedalus_only_always_item = 23; } message 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 { optional bool legacy_location = 18; optional bool daedalus_only_allow = 19; + optional bool daedalus_only_always_item = 20; } message 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 { if (h_door.has_daedalus_only_allow()) { door.set_daedalus_only_allow(h_door.daedalus_only_allow()); } + + if (h_door.has_daedalus_only_always_item()) { + door.set_daedalus_only_always_item(h_door.daedalus_only_always_item()); + } } void ProcessConnectionsFile(std::filesystem::path path, -- cgit 1.4.1