From e9e4a7a42ca17e7dc1947b012c5f6a50047c159e Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 15 Jan 2026 12:17:46 -0500 Subject: Annotated daedalus only maps --- data/maps/daedalus/metadata.txtpb | 1 + data/maps/the_gallery/metadata.txtpb | 1 + data/maps/the_gallery/rooms/Daedalus Extension.txtpb | 1 + data/maps/the_gold/metadata.txtpb | 1 + data/maps/the_tenacious/metadata.txtpb | 1 + proto/data.proto | 9 +++++++++ proto/human.proto | 6 ++++++ tools/datapacker/main.cpp | 9 +++++++++ 8 files changed, 29 insertions(+) diff --git a/data/maps/daedalus/metadata.txtpb b/data/maps/daedalus/metadata.txtpb index e0f5148..6ad90e1 100644 --- a/data/maps/daedalus/metadata.txtpb +++ b/data/maps/daedalus/metadata.txtpb @@ -1,4 +1,5 @@ display_name: "Daedalus" +daedalus_only_mode: DAED_ONLY_ALLOW # These paintings can't be shuffled because they are behind panels. excluded_nodes: "Components/Paintings/Group3/mouse" excluded_nodes: "Components/Paintings/Group3/bee" diff --git a/data/maps/the_gallery/metadata.txtpb b/data/maps/the_gallery/metadata.txtpb index 41ec36e..9d02a11 100644 --- a/data/maps/the_gallery/metadata.txtpb +++ b/data/maps/the_gallery/metadata.txtpb @@ -1,4 +1,5 @@ display_name: "The Gallery" +daedalus_only_mode: DAED_ONLY_PARTIAL # These are the eyes in the foyer, and aren't normal paintings. excluded_nodes: "Components/Paintings/Starting/eye" excluded_nodes: "Components/Paintings/Starting/eye2" diff --git a/data/maps/the_gallery/rooms/Daedalus Extension.txtpb b/data/maps/the_gallery/rooms/Daedalus Extension.txtpb index 51d2be5..c3a72c2 100644 --- a/data/maps/the_gallery/rooms/Daedalus Extension.txtpb +++ b/data/maps/the_gallery/rooms/Daedalus Extension.txtpb @@ -1,4 +1,5 @@ name: "Daedalus Extension" +daedalus_only_allow: true panels { name: "WHERE" path: "Panels/entry_1" diff --git a/data/maps/the_gold/metadata.txtpb b/data/maps/the_gold/metadata.txtpb index fef3e34..c4a8b3b 100644 --- a/data/maps/the_gold/metadata.txtpb +++ b/data/maps/the_gold/metadata.txtpb @@ -1 +1,2 @@ display_name: "The Gold" +daedalus_only_mode: DAED_ONLY_ALLOW diff --git a/data/maps/the_tenacious/metadata.txtpb b/data/maps/the_tenacious/metadata.txtpb index d98e8f2..58b3919 100644 --- a/data/maps/the_tenacious/metadata.txtpb +++ b/data/maps/the_tenacious/metadata.txtpb @@ -1 +1,2 @@ display_name: "The Tenacious" +daedalus_only_mode: DAED_ONLY_ALLOW diff --git a/proto/data.proto b/proto/data.proto index e9cc7d7..01f8d9e 100644 --- a/proto/data.proto +++ b/proto/data.proto @@ -94,6 +94,12 @@ enum PuzzleSymbol { QUESTION = 19; } +enum DaedalusOnlyMode { + DAED_ONLY_DISALLOW = 0; + DAED_ONLY_PARTIAL = 1; + DAED_ONLY_ALLOW = 2; +} + message Vec3d { optional double x = 1; optional double y = 2; @@ -159,6 +165,7 @@ message Door { optional bool legacy_location = 21; optional string location_name = 17; + optional bool daedalus_only_allow = 22; } message PanelData { @@ -259,6 +266,7 @@ message Room { optional string name = 2; optional string display_name = 3; optional string panel_display_name = 13; + optional bool daedalus_only_allow = 14; repeated uint64 panels = 4; repeated uint64 paintings = 5; @@ -274,6 +282,7 @@ message Map { optional uint64 id = 1; optional string name = 2; optional string display_name = 3; + optional DaedalusOnlyMode daedalus_only_mode = 6; optional uint64 worldport_entrance = 4; optional MapType type = 5; } diff --git a/proto/human.proto b/proto/human.proto index c586599..c599341 100644 --- a/proto/human.proto +++ b/proto/human.proto @@ -124,6 +124,8 @@ message HumanDoor { // location is created for it in the generator. This helps provide backwards // compatability with older worlds. optional bool legacy_location = 18; + + optional bool daedalus_only_allow = 19; } message HumanDoors { @@ -215,6 +217,8 @@ message HumanRoom { // doors generated from panels in the same area. optional string panel_display_name = 10; + optional bool daedalus_only_allow = 11; + repeated HumanPanel panels = 3; repeated HumanPainting paintings = 4; repeated HumanLetter letters = 5; @@ -228,6 +232,8 @@ message HumanMap { optional string display_name = 1; optional MapType type = 4; + optional DaedalusOnlyMode daedalus_only_mode = 6; + optional PortIdentifier worldport_entrance = 3; // These two fields are used by the validator and nothing else. excluded_nodes diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 8109bf5..9acc33c 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp @@ -89,6 +89,7 @@ class DataPacker { Map& map = *container_.all_objects().mutable_maps(map_id); map.set_type(metadata.type()); + map.set_daedalus_only_mode(metadata.daedalus_only_mode()); if (metadata.has_display_name()) { map.set_display_name(metadata.display_name()); @@ -121,6 +122,10 @@ class DataPacker { room.set_panel_display_name(h_room.panel_display_name()); } + if (h_room.has_daedalus_only_allow()) { + room.set_daedalus_only_allow(h_room.daedalus_only_allow()); + } + for (const HumanPanel& h_panel : h_room.panels()) { room.add_panels(ProcessPanel(h_panel, current_map_name, room.name())); } @@ -440,6 +445,10 @@ class DataPacker { if (h_door.has_legacy_location()) { door.set_legacy_location(h_door.legacy_location()); } + + if (h_door.has_daedalus_only_allow()) { + door.set_daedalus_only_allow(h_door.daedalus_only_allow()); + } } void ProcessConnectionsFile(std::filesystem::path path, -- cgit 1.4.1