about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--apworld/player_logic.py6
-rw-r--r--data/door_groups.txtpb1
-rw-r--r--proto/data.proto2
-rw-r--r--proto/human.proto2
-rw-r--r--tools/datapacker/main.cpp4
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:
322 if not self.world.options.shuffle_control_center_colors or self.world.options.shuffle_worldports: 322 if not self.world.options.shuffle_control_center_colors or self.world.options.shuffle_worldports:
323 continue 323 continue
324 elif door_group.type == data_pb2.DoorGroupType.SHUFFLE_GROUP: 324 elif door_group.type == data_pb2.DoorGroupType.SHUFFLE_GROUP:
325 if door_group.name == "Lavender Cubes" and self.world.options.daedalus_only: 325 if (not self.world.options.shuffle_doors and
326 # Always shuffle this if we're in Daed-only mode. 326 not (door_group.daedalus_only_always_item and self.world.options.daedalus_only)):
327 pass
328 elif not self.world.options.shuffle_doors:
329 continue 327 continue
330 else: 328 else:
331 continue 329 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 {
156door_groups { 156door_groups {
157 name: "Lavender Cubes" 157 name: "Lavender Cubes"
158 type: SHUFFLE_GROUP 158 type: SHUFFLE_GROUP
159 daedalus_only_always_item: true
159 doors { 160 doors {
160 map: "daedalus" 161 map: "daedalus"
161 name: "C Keyholder Blocker" 162 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 {
303 optional uint64 ap_id = 3; 303 optional uint64 ap_id = 3;
304 optional DoorGroupType type = 4; 304 optional DoorGroupType type = 4;
305 repeated uint64 doors = 5; 305 repeated uint64 doors = 5;
306
307 optional bool daedalus_only_always_item = 6;
306} 308}
307 309
308message AllObjects { 310message 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 {
262 optional string name = 1; 262 optional string name = 1;
263 optional DoorGroupType type = 2; 263 optional DoorGroupType type = 2;
264 repeated DoorIdentifier doors = 3; 264 repeated DoorIdentifier doors = 3;
265
266 optional bool daedalus_only_always_item = 4;
265} 267}
266 268
267message HumanDoorGroups { 269message 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 {
657 container_.FindOrAddDoor(di.map(), di.name(), std::nullopt); 657 container_.FindOrAddDoor(di.map(), di.name(), std::nullopt);
658 group.add_doors(door_id); 658 group.add_doors(door_id);
659 } 659 }
660
661 if (h_group.has_daedalus_only_always_item()) {
662 group.set_daedalus_only_always_item(h_group.daedalus_only_always_item());
663 }
660 } 664 }
661 665
662 void ProcessGlobalMetadataFile(std::filesystem::path path) { 666 void ProcessGlobalMetadataFile(std::filesystem::path path) {