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.proto101
-rw-r--r--proto/human.proto66
2 files changed, 159 insertions, 8 deletions
diff --git a/proto/data.proto b/proto/data.proto index 88e17d0..bf216b9 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 {
@@ -40,6 +63,30 @@ enum AxisDirection {
40 Z_MINUS = 6; 63 Z_MINUS = 6;
41} 64}
42 65
66enum PuzzleSymbol {
67 PUZZLE_SYMBOL_UNKNOWN = 0;
68
69 SUN = 1;
70 SPARKLES = 2;
71 ZERO = 3;
72 EXAMPLE = 4;
73 BOXES = 5;
74 PLANET = 6;
75 PYRAMID = 7;
76 CROSS = 8;
77 SWEET = 9;
78 GENDER = 10;
79 AGE = 11;
80 SOUND = 12;
81 ANAGRAM = 13;
82 JOB = 14;
83 STARS = 15;
84 NULL = 16;
85 EVAL = 17;
86 LINGO = 18;
87 QUESTION = 19;
88}
89
43message ProxyIdentifier { 90message ProxyIdentifier {
44 optional uint64 panel = 1; 91 optional uint64 panel = 1;
45 optional string answer = 2; 92 optional string answer = 2;
@@ -60,6 +107,8 @@ message Connection {
60 uint64 painting = 5; 107 uint64 painting = 5;
61 ProxyIdentifier panel = 6; 108 ProxyIdentifier panel = 6;
62 } 109 }
110
111 optional bool roof_access = 7;
63} 112}
64 113
65message Door { 114message Door {
@@ -76,12 +125,15 @@ message Door {
76 optional uint64 complete_at = 12; 125 optional uint64 complete_at = 12;
77 126
78 optional string control_center_color = 6; 127 optional string control_center_color = 6;
79 repeated string switches = 7;
80 repeated KeyholderAnswer keyholders = 13; 128 repeated KeyholderAnswer keyholders = 13;
81 repeated uint64 rooms = 14; 129 repeated uint64 rooms = 14;
82 repeated uint64 doors = 15; 130 repeated uint64 doors = 15;
131 repeated uint64 endings = 16;
132 optional bool double_letters = 18;
83 133
84 optional DoorType type = 8; 134 optional DoorType type = 8;
135
136 optional string location_name = 17;
85} 137}
86 138
87message PanelData { 139message PanelData {
@@ -93,15 +145,17 @@ message PanelData {
93 optional string path = 4; 145 optional string path = 4;
94 optional string clue = 5; 146 optional string clue = 5;
95 optional string answer = 6; 147 optional string answer = 6;
96 repeated string symbols = 7; 148 repeated PuzzleSymbol symbols = 7;
97 149
98 repeated Proxy proxies = 8; 150 repeated Proxy proxies = 8;
99 151
100 optional uint64 required_door = 9; 152 optional uint64 required_door = 9;
101 optional uint64 required_room = 11; 153 optional uint64 required_room = 11;
154
155 optional string display_name = 12;
102} 156}
103 157
104message Painting { 158message PaintingData {
105 optional uint64 id = 1; 159 optional uint64 id = 1;
106 optional uint64 room_id = 2; 160 optional uint64 room_id = 2;
107 optional string name = 9; 161 optional string name = 9;
@@ -130,12 +184,14 @@ message Port {
130 optional uint64 required_door = 6; 184 optional uint64 required_door = 6;
131} 185}
132 186
133message Keyholder { 187message KeyholderData {
134 optional uint64 id = 1; 188 optional uint64 id = 1;
189 optional uint64 ap_id = 6;
135 optional uint64 room_id = 2; 190 optional uint64 room_id = 2;
136 191
137 optional string name = 3; 192 optional string name = 3;
138 optional string path = 4; 193 optional string path = 4;
194 optional string key = 5;
139} 195}
140 196
141message Letter { 197message Letter {
@@ -158,11 +214,22 @@ message Mastery {
158 optional string path = 5; 214 optional string path = 5;
159} 215}
160 216
217message Ending {
218 optional uint64 id = 1;
219 optional uint64 ap_id = 2;
220 optional uint64 room_id = 3;
221
222 optional string name = 4;
223
224 optional string path = 5;
225}
226
161message Room { 227message Room {
162 optional uint64 id = 1; 228 optional uint64 id = 1;
163 optional uint64 map_id = 8; 229 optional uint64 map_id = 8;
164 optional string name = 2; 230 optional string name = 2;
165 optional string display_name = 3; 231 optional string display_name = 3;
232 optional string panel_display_name = 13;
166 233
167 repeated uint64 panels = 4; 234 repeated uint64 panels = 4;
168 repeated uint64 paintings = 5; 235 repeated uint64 paintings = 5;
@@ -171,23 +238,45 @@ message Room {
171 repeated uint64 doors = 9; 238 repeated uint64 doors = 9;
172 repeated uint64 masteries = 10; 239 repeated uint64 masteries = 10;
173 repeated uint64 keyholders = 11; 240 repeated uint64 keyholders = 11;
241 repeated uint64 endings = 12;
174} 242}
175 243
176message Map { 244message Map {
177 optional uint64 id = 1; 245 optional uint64 id = 1;
178 optional string name = 2; 246 optional string name = 2;
247 optional string display_name = 3;
248}
249
250message Progressive {
251 optional uint64 id = 1;
252 optional string name = 2;
253 optional uint64 ap_id = 3;
254 repeated uint64 doors = 4;
255}
256
257message DoorGroup {
258 optional uint64 id = 1;
259 optional string name = 2;
260 optional uint64 ap_id = 3;
261 optional DoorGroupType type = 4;
262 repeated uint64 doors = 5;
179} 263}
180 264
181message AllObjects { 265message AllObjects {
266 optional uint64 version = 15;
267
182 repeated Map maps = 7; 268 repeated Map maps = 7;
183 repeated Room rooms = 1; 269 repeated Room rooms = 1;
184 repeated Door doors = 2; 270 repeated Door doors = 2;
185 repeated PanelData panels = 3; 271 repeated PanelData panels = 3;
186 repeated Painting paintings = 4; 272 repeated PaintingData paintings = 4;
187 repeated Port ports = 5; 273 repeated Port ports = 5;
188 repeated Keyholder keyholders = 11; 274 repeated KeyholderData keyholders = 11;
189 repeated Letter letters = 9; 275 repeated Letter letters = 9;
190 repeated Mastery masteries = 10; 276 repeated Mastery masteries = 10;
277 repeated Ending endings = 12;
191 repeated Connection connections = 6; 278 repeated Connection connections = 6;
279 repeated Progressive progressives = 13;
280 repeated DoorGroup door_groups = 14;
192 map<string, uint64> special_ids = 8; 281 map<string, uint64> special_ids = 8;
193} 282}
diff --git a/proto/human.proto b/proto/human.proto index 64231a2..615ac86 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -62,6 +62,14 @@ 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;
65} 73}
66 74
67message HumanConnections { 75message HumanConnections {
@@ -82,13 +90,15 @@ message HumanDoor {
82 optional uint64 complete_at = 9; 90 optional uint64 complete_at = 9;
83 91
84 optional string control_center_color = 6; 92 optional string control_center_color = 6;
85 repeated string switches = 7;
86 repeated KeyholderIdentifier keyholders = 10; 93 repeated KeyholderIdentifier keyholders = 10;
87 repeated RoomIdentifier rooms = 11; 94 repeated RoomIdentifier rooms = 11;
88 repeated DoorIdentifier doors = 12; 95 repeated DoorIdentifier doors = 12;
96 repeated string endings = 13;
97 optional bool double_letters = 15;
89 98
90 optional DoorType type = 4; 99 optional DoorType type = 4;
91 optional string location_room = 5; 100 optional string location_room = 5;
101 optional string location_name = 14;
92} 102}
93 103
94message HumanDoors { 104message HumanDoors {
@@ -101,12 +111,14 @@ message HumanPanel {
101 111
102 optional string clue = 2; 112 optional string clue = 2;
103 optional string answer = 3; 113 optional string answer = 3;
104 repeated string symbols = 4; 114 repeated PuzzleSymbol symbols = 4;
105 115
106 repeated Proxy proxies = 6; 116 repeated Proxy proxies = 6;
107 117
108 optional DoorIdentifier required_door = 7; 118 optional DoorIdentifier required_door = 7;
109 optional RoomIdentifier required_room = 8; 119 optional RoomIdentifier required_room = 8;
120
121 optional string display_name = 9;
110} 122}
111 123
112message HumanPainting { 124message HumanPainting {
@@ -137,6 +149,13 @@ message HumanPort {
137message HumanKeyholder { 149message HumanKeyholder {
138 optional string name = 1; 150 optional string name = 1;
139 optional string path = 2; 151 optional string path = 2;
152
153 // If this is set, the keyholder will become a location when keyholder shuffle
154 // is enabled. This value specifies the key that is required to clear the
155 // location. It should be the same as the key needed for Green Ending. The
156 // only cases when this shouldn't be set is the two disappearing keyholders in
157 // The Congruent.
158 optional string key = 3;
140} 159}
141 160
142message HumanLetter { 161message HumanLetter {
@@ -151,22 +170,62 @@ message HumanMastery {
151 optional string path = 2; 170 optional string path = 2;
152} 171}
153 172
173message HumanEnding {
174 optional string name = 1;
175 optional string path = 2;
176}
177
154message HumanRoom { 178message HumanRoom {
155 optional string name = 1; 179 optional string name = 1;
156 optional string display_name = 2; 180 optional string display_name = 2;
157 181
182 // This is used in panelsanity location names and location names for STANDARD
183 // doors generated from panels in the same area.
184 optional string panel_display_name = 10;
185
158 repeated HumanPanel panels = 3; 186 repeated HumanPanel panels = 3;
159 repeated HumanPainting paintings = 4; 187 repeated HumanPainting paintings = 4;
160 repeated HumanLetter letters = 5; 188 repeated HumanLetter letters = 5;
161 repeated HumanPort ports = 6; 189 repeated HumanPort ports = 6;
162 repeated HumanKeyholder keyholders = 7; 190 repeated HumanKeyholder keyholders = 7;
163 repeated HumanMastery masteries = 8; 191 repeated HumanMastery masteries = 8;
192 repeated HumanEnding endings = 9;
193}
194
195message HumanMap {
196 optional string display_name = 1;
197 repeated string excluded_nodes = 2;
198}
199
200message HumanProgressive {
201 optional string name = 1;
202 repeated DoorIdentifier doors = 2;
203}
204
205message HumanProgressives {
206 repeated HumanProgressive progressives = 1;
207}
208
209message HumanDoorGroup {
210 optional string name = 1;
211 optional DoorGroupType type = 2;
212 repeated DoorIdentifier doors = 3;
213}
214
215message HumanDoorGroups {
216 repeated HumanDoorGroup door_groups = 1;
217}
218
219message HumanGlobalMetadata {
220 repeated string special_names = 1;
221 optional uint64 version = 2;
164} 222}
165 223
166message IdMappings { 224message IdMappings {
167 message RoomIds { 225 message RoomIds {
168 map<string, uint64> panels = 1; 226 map<string, uint64> panels = 1;
169 map<string, uint64> masteries = 2; 227 map<string, uint64> masteries = 2;
228 map<string, uint64> keyholders = 3;
170 } 229 }
171 230
172 message MapIds { 231 message MapIds {
@@ -177,4 +236,7 @@ message IdMappings {
177 map<string, MapIds> maps = 1; 236 map<string, MapIds> maps = 1;
178 map<string, uint64> special = 2; 237 map<string, uint64> special = 2;
179 map<string, uint64> letters = 3; 238 map<string, uint64> letters = 3;
239 map<string, uint64> endings = 4;
240 map<string, uint64> progressives = 5;
241 map<string, uint64> door_groups = 6;
180} 242}