about summary refs log tree commit diff stats
path: root/proto
diff options
context:
space:
mode:
Diffstat (limited to 'proto')
-rw-r--r--proto/data.proto56
-rw-r--r--proto/human.proto63
2 files changed, 117 insertions, 2 deletions
diff --git a/proto/data.proto b/proto/data.proto index 93f2227..64e3ddc 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -27,6 +27,29 @@ enum DoorType {
27 27
28 // This door is an item if gravestone shuffle is enabled, and is a location as long as panelsanity is not on. 28 // This door is an item if gravestone shuffle is enabled, and is a location as long as panelsanity is not on.
29 GRAVESTONE = 6; 29 GRAVESTONE = 6;
30
31 // This door is never a location, and is an item as long as gallery painting shuffle is on.
32 GALLERY_PAINTING = 7;
33}
34
35enum DoorGroupType {
36 DOOR_GROUP_TYPE_UNKNOWN = 0;
37
38 // These doors border a worldport. They should be grouped when connections are
39 // not shuffled.
40 CONNECTOR = 1;
41
42 // Similar to CONNECTOR, but these doors are also ordinarily opened by solving
43 // the COLOR panel in the Control Center. These should be grouped when
44 // connections are not shuffled, but are not items at all when control center
45 // colors are not shuffled.
46 COLOR_CONNECTOR = 2;
47
48 // Groups with this type become an item if cyan door behavior is set to item.
49 CYAN_DOORS = 3;
50
51 // Groups with this type always become an item if door shuffle is on.
52 SHUFFLE_GROUP = 4;
30} 53}
31 54
32enum AxisDirection { 55enum AxisDirection {
@@ -84,6 +107,10 @@ message Connection {
84 uint64 painting = 5; 107 uint64 painting = 5;
85 ProxyIdentifier panel = 6; 108 ProxyIdentifier panel = 6;
86 } 109 }
110
111 optional bool roof_access = 7;
112 optional bool purple_ending = 8;
113 optional bool cyan_ending = 9;
87} 114}
88 115
89message Door { 116message Door {
@@ -100,13 +127,16 @@ message Door {
100 optional uint64 complete_at = 12; 127 optional uint64 complete_at = 12;
101 128
102 optional string control_center_color = 6; 129 optional string control_center_color = 6;
103 repeated string switches = 7;
104 repeated KeyholderAnswer keyholders = 13; 130 repeated KeyholderAnswer keyholders = 13;
105 repeated uint64 rooms = 14; 131 repeated uint64 rooms = 14;
106 repeated uint64 doors = 15; 132 repeated uint64 doors = 15;
107 repeated uint64 endings = 16; 133 repeated uint64 endings = 16;
134 optional bool double_letters = 18;
135 repeated string senders = 19;
108 136
109 optional DoorType type = 8; 137 optional DoorType type = 8;
138
139 optional string location_name = 17;
110} 140}
111 141
112message PanelData { 142message PanelData {
@@ -124,6 +154,8 @@ message PanelData {
124 154
125 optional uint64 required_door = 9; 155 optional uint64 required_door = 9;
126 optional uint64 required_room = 11; 156 optional uint64 required_room = 11;
157
158 optional string display_name = 12;
127} 159}
128 160
129message PaintingData { 161message PaintingData {
@@ -157,10 +189,12 @@ message Port {
157 189
158message KeyholderData { 190message KeyholderData {
159 optional uint64 id = 1; 191 optional uint64 id = 1;
192 optional uint64 ap_id = 6;
160 optional uint64 room_id = 2; 193 optional uint64 room_id = 2;
161 194
162 optional string name = 3; 195 optional string name = 3;
163 optional string path = 4; 196 optional string path = 4;
197 optional string key = 5;
164} 198}
165 199
166message Letter { 200message Letter {
@@ -198,6 +232,7 @@ message Room {
198 optional uint64 map_id = 8; 232 optional uint64 map_id = 8;
199 optional string name = 2; 233 optional string name = 2;
200 optional string display_name = 3; 234 optional string display_name = 3;
235 optional string panel_display_name = 13;
201 236
202 repeated uint64 panels = 4; 237 repeated uint64 panels = 4;
203 repeated uint64 paintings = 5; 238 repeated uint64 paintings = 5;
@@ -215,7 +250,24 @@ message Map {
215 optional string display_name = 3; 250 optional string display_name = 3;
216} 251}
217 252
253message Progressive {
254 optional uint64 id = 1;
255 optional string name = 2;
256 optional uint64 ap_id = 3;
257 repeated uint64 doors = 4;
258}
259
260message DoorGroup {
261 optional uint64 id = 1;
262 optional string name = 2;
263 optional uint64 ap_id = 3;
264 optional DoorGroupType type = 4;
265 repeated uint64 doors = 5;
266}
267
218message AllObjects { 268message AllObjects {
269 optional uint64 version = 15;
270
219 repeated Map maps = 7; 271 repeated Map maps = 7;
220 repeated Room rooms = 1; 272 repeated Room rooms = 1;
221 repeated Door doors = 2; 273 repeated Door doors = 2;
@@ -227,5 +279,7 @@ message AllObjects {
227 repeated Mastery masteries = 10; 279 repeated Mastery masteries = 10;
228 repeated Ending endings = 12; 280 repeated Ending endings = 12;
229 repeated Connection connections = 6; 281 repeated Connection connections = 6;
282 repeated Progressive progressives = 13;
283 repeated DoorGroup door_groups = 14;
230 map<string, uint64> special_ids = 8; 284 map<string, uint64> special_ids = 8;
231} 285}
diff --git a/proto/human.proto b/proto/human.proto index 1a15c59..c247edf 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -62,6 +62,22 @@ message HumanConnection {
62 62
63 optional bool oneway = 3; 63 optional bool oneway = 3;
64 optional DoorIdentifier door = 4; 64 optional DoorIdentifier door = 4;
65
66 // If true, this connection will only be logically allowed if the Daedalus
67 // Roof Access option is enabled.
68 optional bool roof_access = 7;
69
70 // This means that the connection intentionally skips the target object's
71 // required door.
72 optional bool bypass_target_door = 8;
73
74 // This means that the connection should additionally require all purple
75 // letters when the Strict Purple Ending option is on.
76 optional bool purple_ending = 9;
77
78 // This means that the connection should additionally require all cyan letters
79 // when the Strict Cyan Ending option is on.
80 optional bool cyan_ending = 10;
65} 81}
66 82
67message HumanConnections { 83message HumanConnections {
@@ -82,14 +98,19 @@ message HumanDoor {
82 optional uint64 complete_at = 9; 98 optional uint64 complete_at = 9;
83 99
84 optional string control_center_color = 6; 100 optional string control_center_color = 6;
85 repeated string switches = 7;
86 repeated KeyholderIdentifier keyholders = 10; 101 repeated KeyholderIdentifier keyholders = 10;
87 repeated RoomIdentifier rooms = 11; 102 repeated RoomIdentifier rooms = 11;
88 repeated DoorIdentifier doors = 12; 103 repeated DoorIdentifier doors = 12;
89 repeated string endings = 13; 104 repeated string endings = 13;
105 optional bool double_letters = 15;
106
107 // Sender nodes to be added to the list of requirements for triggering the
108 // location. Only for senders that have no logic requirements.
109 repeated string senders = 16;
90 110
91 optional DoorType type = 4; 111 optional DoorType type = 4;
92 optional string location_room = 5; 112 optional string location_room = 5;
113 optional string location_name = 14;
93} 114}
94 115
95message HumanDoors { 116message HumanDoors {
@@ -108,6 +129,8 @@ message HumanPanel {
108 129
109 optional DoorIdentifier required_door = 7; 130 optional DoorIdentifier required_door = 7;
110 optional RoomIdentifier required_room = 8; 131 optional RoomIdentifier required_room = 8;
132
133 optional string display_name = 9;
111} 134}
112 135
113message HumanPainting { 136message HumanPainting {
@@ -138,6 +161,13 @@ message HumanPort {
138message HumanKeyholder { 161message HumanKeyholder {
139 optional string name = 1; 162 optional string name = 1;
140 optional string path = 2; 163 optional string path = 2;
164
165 // If this is set, the keyholder will become a location when keyholder shuffle
166 // is enabled. This value specifies the key that is required to clear the
167 // location. It should be the same as the key needed for Green Ending. The
168 // only cases when this shouldn't be set is the two disappearing keyholders in
169 // The Congruent.
170 optional string key = 3;
141} 171}
142 172
143message HumanLetter { 173message HumanLetter {
@@ -161,6 +191,10 @@ message HumanRoom {
161 optional string name = 1; 191 optional string name = 1;
162 optional string display_name = 2; 192 optional string display_name = 2;
163 193
194 // This is used in panelsanity location names and location names for STANDARD
195 // doors generated from panels in the same area.
196 optional string panel_display_name = 10;
197
164 repeated HumanPanel panels = 3; 198 repeated HumanPanel panels = 3;
165 repeated HumanPainting paintings = 4; 199 repeated HumanPainting paintings = 4;
166 repeated HumanLetter letters = 5; 200 repeated HumanLetter letters = 5;
@@ -175,10 +209,35 @@ message HumanMap {
175 repeated string excluded_nodes = 2; 209 repeated string excluded_nodes = 2;
176} 210}
177 211
212message HumanProgressive {
213 optional string name = 1;
214 repeated DoorIdentifier doors = 2;
215}
216
217message HumanProgressives {
218 repeated HumanProgressive progressives = 1;
219}
220
221message HumanDoorGroup {
222 optional string name = 1;
223 optional DoorGroupType type = 2;
224 repeated DoorIdentifier doors = 3;
225}
226
227message HumanDoorGroups {
228 repeated HumanDoorGroup door_groups = 1;
229}
230
231message HumanGlobalMetadata {
232 repeated string special_names = 1;
233 optional uint64 version = 2;
234}
235
178message IdMappings { 236message IdMappings {
179 message RoomIds { 237 message RoomIds {
180 map<string, uint64> panels = 1; 238 map<string, uint64> panels = 1;
181 map<string, uint64> masteries = 2; 239 map<string, uint64> masteries = 2;
240 map<string, uint64> keyholders = 3;
182 } 241 }
183 242
184 message MapIds { 243 message MapIds {
@@ -190,4 +249,6 @@ message IdMappings {
190 map<string, uint64> special = 2; 249 map<string, uint64> special = 2;
191 map<string, uint64> letters = 3; 250 map<string, uint64> letters = 3;
192 map<string, uint64> endings = 4; 251 map<string, uint64> endings = 4;
252 map<string, uint64> progressives = 5;
253 map<string, uint64> door_groups = 6;
193} 254}