From c5fa0dcde264ea95e75b54884934abc2573cd8f9 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 5 Feb 2026 14:58:51 -0500 Subject: Annotate Lavender Cubes as always item in daed only mode --- apworld/player_logic.py | 6 ++---- data/door_groups.txtpb | 1 + proto/data.proto | 2 ++ proto/human.proto | 2 ++ tools/datapacker/main.cpp | 4 ++++ 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/apworld/player_logic.py b/apworld/player_logic.py index 2ffc0eb..b946296 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py @@ -322,10 +322,8 @@ class Lingo2PlayerLogic: if not self.world.options.shuffle_control_center_colors or self.world.options.shuffle_worldports: continue elif door_group.type == data_pb2.DoorGroupType.SHUFFLE_GROUP: - if door_group.name == "Lavender Cubes" and self.world.options.daedalus_only: - # Always shuffle this if we're in Daed-only mode. - pass - elif not self.world.options.shuffle_doors: + if (not self.world.options.shuffle_doors and + not (door_group.daedalus_only_always_item and self.world.options.daedalus_only)): continue else: continue diff --git a/data/door_groups.txtpb b/data/door_groups.txtpb index 2e65d4b..0f704da 100644 --- a/data/door_groups.txtpb +++ b/data/door_groups.txtpb @@ -156,6 +156,7 @@ door_groups { door_groups { name: "Lavender Cubes" type: SHUFFLE_GROUP + daedalus_only_always_item: true doors { map: "daedalus" name: "C Keyholder Blocker" diff --git a/proto/data.proto b/proto/data.proto index de20128..d7538da 100644 --- a/proto/data.proto +++ b/proto/data.proto @@ -303,6 +303,8 @@ message DoorGroup { optional uint64 ap_id = 3; optional DoorGroupType type = 4; repeated uint64 doors = 5; + + optional bool daedalus_only_always_item = 6; } message AllObjects { diff --git a/proto/human.proto b/proto/human.proto index 2d3dbb6..39625d5 100644 --- a/proto/human.proto +++ b/proto/human.proto @@ -262,6 +262,8 @@ message HumanDoorGroup { optional string name = 1; optional DoorGroupType type = 2; repeated DoorIdentifier doors = 3; + + optional bool daedalus_only_always_item = 4; } message HumanDoorGroups { diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 349e895..953821f 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp @@ -657,6 +657,10 @@ class DataPacker { container_.FindOrAddDoor(di.map(), di.name(), std::nullopt); group.add_doors(door_id); } + + if (h_group.has_daedalus_only_always_item()) { + group.set_daedalus_only_always_item(h_group.daedalus_only_always_item()); + } } void ProcessGlobalMetadataFile(std::filesystem::path path) { -- cgit 1.4.1