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.proto82
-rw-r--r--proto/human.proto75
2 files changed, 149 insertions, 8 deletions
diff --git a/proto/data.proto b/proto/data.proto index 211a7ac..d79f47d 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 {
@@ -64,6 +87,18 @@ enum PuzzleSymbol {
64 QUESTION = 19; 87 QUESTION = 19;
65} 88}
66 89
90message Vec3d {
91 optional double x = 1;
92 optional double y = 2;
93 optional double z = 3;
94}
95
96message VersionNumber {
97 optional uint64 major = 1;
98 optional uint64 minor = 2;
99 optional uint64 patch = 3;
100}
101
67message ProxyIdentifier { 102message ProxyIdentifier {
68 optional uint64 panel = 1; 103 optional uint64 panel = 1;
69 optional string answer = 2; 104 optional string answer = 2;
@@ -84,6 +119,11 @@ message Connection {
84 uint64 painting = 5; 119 uint64 painting = 5;
85 ProxyIdentifier panel = 6; 120 ProxyIdentifier panel = 6;
86 } 121 }
122
123 optional bool roof_access = 7;
124 optional bool purple_ending = 8;
125 optional bool cyan_ending = 9;
126 optional bool vanilla_only = 10;
87} 127}
88 128
89message Door { 129message Door {
@@ -100,13 +140,16 @@ message Door {
100 optional uint64 complete_at = 12; 140 optional uint64 complete_at = 12;
101 141
102 optional string control_center_color = 6; 142 optional string control_center_color = 6;
103 repeated string switches = 7;
104 repeated KeyholderAnswer keyholders = 13; 143 repeated KeyholderAnswer keyholders = 13;
105 repeated uint64 rooms = 14; 144 repeated uint64 rooms = 14;
106 repeated uint64 doors = 15; 145 repeated uint64 doors = 15;
107 repeated uint64 endings = 16; 146 repeated uint64 endings = 16;
147 optional bool double_letters = 18;
148 repeated string senders = 19;
108 149
109 optional DoorType type = 8; 150 optional DoorType type = 8;
151
152 optional string location_name = 17;
110} 153}
111 154
112message PanelData { 155message PanelData {
@@ -124,9 +167,11 @@ message PanelData {
124 167
125 optional uint64 required_door = 9; 168 optional uint64 required_door = 9;
126 optional uint64 required_room = 11; 169 optional uint64 required_room = 11;
170
171 optional string display_name = 12;
127} 172}
128 173
129message Painting { 174message PaintingData {
130 optional uint64 id = 1; 175 optional uint64 id = 1;
131 optional uint64 room_id = 2; 176 optional uint64 room_id = 2;
132 optional string name = 9; 177 optional string name = 9;
@@ -148,19 +193,24 @@ message Port {
148 optional uint64 room_id = 2; 193 optional uint64 room_id = 2;
149 optional string name = 3; 194 optional string name = 3;
150 195
196 optional string display_name = 10;
151 optional string path = 4; 197 optional string path = 4;
152 optional string orientation = 5; 198 optional Vec3d destination = 5;
199 optional double rotation = 8;
153 optional AxisDirection gravity = 7; 200 optional AxisDirection gravity = 7;
201 optional bool no_shuffle = 9;
154 202
155 optional uint64 required_door = 6; 203 optional uint64 required_door = 6;
156} 204}
157 205
158message Keyholder { 206message KeyholderData {
159 optional uint64 id = 1; 207 optional uint64 id = 1;
208 optional uint64 ap_id = 6;
160 optional uint64 room_id = 2; 209 optional uint64 room_id = 2;
161 210
162 optional string name = 3; 211 optional string name = 3;
163 optional string path = 4; 212 optional string path = 4;
213 optional string key = 5;
164} 214}
165 215
166message Letter { 216message Letter {
@@ -198,6 +248,7 @@ message Room {
198 optional uint64 map_id = 8; 248 optional uint64 map_id = 8;
199 optional string name = 2; 249 optional string name = 2;
200 optional string display_name = 3; 250 optional string display_name = 3;
251 optional string panel_display_name = 13;
201 252
202 repeated uint64 panels = 4; 253 repeated uint64 panels = 4;
203 repeated uint64 paintings = 5; 254 repeated uint64 paintings = 5;
@@ -215,17 +266,36 @@ message Map {
215 optional string display_name = 3; 266 optional string display_name = 3;
216} 267}
217 268
269message Progressive {
270 optional uint64 id = 1;
271 optional string name = 2;
272 optional uint64 ap_id = 3;
273 repeated uint64 doors = 4;
274}
275
276message DoorGroup {
277 optional uint64 id = 1;
278 optional string name = 2;
279 optional uint64 ap_id = 3;
280 optional DoorGroupType type = 4;
281 repeated uint64 doors = 5;
282}
283
218message AllObjects { 284message AllObjects {
285 optional VersionNumber version = 15;
286
219 repeated Map maps = 7; 287 repeated Map maps = 7;
220 repeated Room rooms = 1; 288 repeated Room rooms = 1;
221 repeated Door doors = 2; 289 repeated Door doors = 2;
222 repeated PanelData panels = 3; 290 repeated PanelData panels = 3;
223 repeated Painting paintings = 4; 291 repeated PaintingData paintings = 4;
224 repeated Port ports = 5; 292 repeated Port ports = 5;
225 repeated Keyholder keyholders = 11; 293 repeated KeyholderData keyholders = 11;
226 repeated Letter letters = 9; 294 repeated Letter letters = 9;
227 repeated Mastery masteries = 10; 295 repeated Mastery masteries = 10;
228 repeated Ending endings = 12; 296 repeated Ending endings = 12;
229 repeated Connection connections = 6; 297 repeated Connection connections = 6;
298 repeated Progressive progressives = 13;
299 repeated DoorGroup door_groups = 14;
230 map<string, uint64> special_ids = 8; 300 map<string, uint64> special_ids = 8;
231} 301}
diff --git a/proto/human.proto b/proto/human.proto index 1a15c59..8e7767a 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -62,6 +62,25 @@ 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;
81
82 // This means that the connection only exists when doors are not shuffled.
83 optional bool vanilla_only = 11;
65} 84}
66 85
67message HumanConnections { 86message HumanConnections {
@@ -82,14 +101,19 @@ message HumanDoor {
82 optional uint64 complete_at = 9; 101 optional uint64 complete_at = 9;
83 102
84 optional string control_center_color = 6; 103 optional string control_center_color = 6;
85 repeated string switches = 7;
86 repeated KeyholderIdentifier keyholders = 10; 104 repeated KeyholderIdentifier keyholders = 10;
87 repeated RoomIdentifier rooms = 11; 105 repeated RoomIdentifier rooms = 11;
88 repeated DoorIdentifier doors = 12; 106 repeated DoorIdentifier doors = 12;
89 repeated string endings = 13; 107 repeated string endings = 13;
108 optional bool double_letters = 15;
109
110 // Sender nodes to be added to the list of requirements for triggering the
111 // location. Only for senders that have no logic requirements.
112 repeated string senders = 16;
90 113
91 optional DoorType type = 4; 114 optional DoorType type = 4;
92 optional string location_room = 5; 115 optional string location_room = 5;
116 optional string location_name = 14;
93} 117}
94 118
95message HumanDoors { 119message HumanDoors {
@@ -108,6 +132,8 @@ message HumanPanel {
108 132
109 optional DoorIdentifier required_door = 7; 133 optional DoorIdentifier required_door = 7;
110 optional RoomIdentifier required_room = 8; 134 optional RoomIdentifier required_room = 8;
135
136 optional string display_name = 9;
111} 137}
112 138
113message HumanPainting { 139message HumanPainting {
@@ -127,9 +153,16 @@ message HumanPainting {
127 153
128message HumanPort { 154message HumanPort {
129 optional string name = 1; 155 optional string name = 1;
156 optional string display_name = 8;
130 optional string path = 2; 157 optional string path = 2;
131 158
132 optional string orientation = 3; 159 optional bool no_shuffle = 7;
160
161 // These specify how the player should be placed when a randomized entrance
162 // sends them to this port. "rotation" is in degrees and is counter-clockwise
163 // from the positive X axis.
164 optional Vec3d destination = 3;
165 optional double rotation = 6;
133 optional AxisDirection gravity = 5 [default = Y_MINUS]; 166 optional AxisDirection gravity = 5 [default = Y_MINUS];
134 167
135 optional DoorIdentifier required_door = 4; 168 optional DoorIdentifier required_door = 4;
@@ -138,6 +171,13 @@ message HumanPort {
138message HumanKeyholder { 171message HumanKeyholder {
139 optional string name = 1; 172 optional string name = 1;
140 optional string path = 2; 173 optional string path = 2;
174
175 // If this is set, the keyholder will become a location when keyholder shuffle
176 // is enabled. This value specifies the key that is required to clear the
177 // location. It should be the same as the key needed for Green Ending. The
178 // only cases when this shouldn't be set is the two disappearing keyholders in
179 // The Congruent.
180 optional string key = 3;
141} 181}
142 182
143message HumanLetter { 183message HumanLetter {
@@ -161,6 +201,10 @@ message HumanRoom {
161 optional string name = 1; 201 optional string name = 1;
162 optional string display_name = 2; 202 optional string display_name = 2;
163 203
204 // This is used in panelsanity location names and location names for STANDARD
205 // doors generated from panels in the same area.
206 optional string panel_display_name = 10;
207
164 repeated HumanPanel panels = 3; 208 repeated HumanPanel panels = 3;
165 repeated HumanPainting paintings = 4; 209 repeated HumanPainting paintings = 4;
166 repeated HumanLetter letters = 5; 210 repeated HumanLetter letters = 5;
@@ -175,10 +219,35 @@ message HumanMap {
175 repeated string excluded_nodes = 2; 219 repeated string excluded_nodes = 2;
176} 220}
177 221
222message HumanProgressive {
223 optional string name = 1;
224 repeated DoorIdentifier doors = 2;
225}
226
227message HumanProgressives {
228 repeated HumanProgressive progressives = 1;
229}
230
231message HumanDoorGroup {
232 optional string name = 1;
233 optional DoorGroupType type = 2;
234 repeated DoorIdentifier doors = 3;
235}
236
237message HumanDoorGroups {
238 repeated HumanDoorGroup door_groups = 1;
239}
240
241message HumanGlobalMetadata {
242 repeated string special_names = 1;
243 optional VersionNumber version = 2;
244}
245
178message IdMappings { 246message IdMappings {
179 message RoomIds { 247 message RoomIds {
180 map<string, uint64> panels = 1; 248 map<string, uint64> panels = 1;
181 map<string, uint64> masteries = 2; 249 map<string, uint64> masteries = 2;
250 map<string, uint64> keyholders = 3;
182 } 251 }
183 252
184 message MapIds { 253 message MapIds {
@@ -190,4 +259,6 @@ message IdMappings {
190 map<string, uint64> special = 2; 259 map<string, uint64> special = 2;
191 map<string, uint64> letters = 3; 260 map<string, uint64> letters = 3;
192 map<string, uint64> endings = 4; 261 map<string, uint64> endings = 4;
262 map<string, uint64> progressives = 5;
263 map<string, uint64> door_groups = 6;
193} 264}