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.proto44
-rw-r--r--proto/human.proto58
2 files changed, 96 insertions, 6 deletions
diff --git a/proto/data.proto b/proto/data.proto index 24b98fe..e9cc7d7 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -27,6 +27,9 @@ 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;
30} 33}
31 34
32enum DoorGroupType { 35enum DoorGroupType {
@@ -44,6 +47,16 @@ enum DoorGroupType {
44 47
45 // Groups with this type become an item if cyan door behavior is set to item. 48 // Groups with this type become an item if cyan door behavior is set to item.
46 CYAN_DOORS = 3; 49 CYAN_DOORS = 3;
50
51 // Groups with this type always become an item if door shuffle is on.
52 SHUFFLE_GROUP = 4;
53}
54
55enum MapType {
56 NORMAL_MAP = 0;
57 ICARUS = 1;
58 GIFT_MAP = 2;
59 DEMO = 3;
47} 60}
48 61
49enum AxisDirection { 62enum AxisDirection {
@@ -81,6 +94,18 @@ enum PuzzleSymbol {
81 QUESTION = 19; 94 QUESTION = 19;
82} 95}
83 96
97message Vec3d {
98 optional double x = 1;
99 optional double y = 2;
100 optional double z = 3;
101}
102
103message VersionNumber {
104 optional uint64 major = 1;
105 optional uint64 minor = 2;
106 optional uint64 patch = 3;
107}
108
84message ProxyIdentifier { 109message ProxyIdentifier {
85 optional uint64 panel = 1; 110 optional uint64 panel = 1;
86 optional string answer = 2; 111 optional string answer = 2;
@@ -103,6 +128,9 @@ message Connection {
103 } 128 }
104 129
105 optional bool roof_access = 7; 130 optional bool roof_access = 7;
131 optional bool purple_ending = 8;
132 optional bool cyan_ending = 9;
133 optional bool vanilla_only = 10;
106} 134}
107 135
108message Door { 136message Door {
@@ -119,14 +147,16 @@ message Door {
119 optional uint64 complete_at = 12; 147 optional uint64 complete_at = 12;
120 148
121 optional string control_center_color = 6; 149 optional string control_center_color = 6;
122 repeated string switches = 7;
123 repeated KeyholderAnswer keyholders = 13; 150 repeated KeyholderAnswer keyholders = 13;
124 repeated uint64 rooms = 14; 151 repeated uint64 rooms = 14;
125 repeated uint64 doors = 15; 152 repeated uint64 doors = 15;
126 repeated uint64 endings = 16; 153 optional bool white_ending = 16;
127 optional bool double_letters = 18; 154 optional bool double_letters = 18;
155 repeated string senders = 19;
128 156
129 optional DoorType type = 8; 157 optional DoorType type = 8;
158 optional bool latch = 20;
159 optional bool legacy_location = 21;
130 160
131 optional string location_name = 17; 161 optional string location_name = 17;
132} 162}
@@ -169,12 +199,16 @@ message PaintingData {
169 199
170message Port { 200message Port {
171 optional uint64 id = 1; 201 optional uint64 id = 1;
202 optional uint64 ap_id = 11;
172 optional uint64 room_id = 2; 203 optional uint64 room_id = 2;
173 optional string name = 3; 204 optional string name = 3;
174 205
206 optional string display_name = 10;
175 optional string path = 4; 207 optional string path = 4;
176 optional string orientation = 5; 208 optional Vec3d destination = 5;
209 optional double rotation = 8;
177 optional AxisDirection gravity = 7; 210 optional AxisDirection gravity = 7;
211 optional bool no_shuffle = 9;
178 212
179 optional uint64 required_door = 6; 213 optional uint64 required_door = 6;
180} 214}
@@ -240,6 +274,8 @@ message Map {
240 optional uint64 id = 1; 274 optional uint64 id = 1;
241 optional string name = 2; 275 optional string name = 2;
242 optional string display_name = 3; 276 optional string display_name = 3;
277 optional uint64 worldport_entrance = 4;
278 optional MapType type = 5;
243} 279}
244 280
245message Progressive { 281message Progressive {
@@ -258,6 +294,8 @@ message DoorGroup {
258} 294}
259 295
260message AllObjects { 296message AllObjects {
297 optional VersionNumber version = 15;
298
261 repeated Map maps = 7; 299 repeated Map maps = 7;
262 repeated Room rooms = 1; 300 repeated Room rooms = 1;
263 repeated Door doors = 2; 301 repeated Door doors = 2;
diff --git a/proto/human.proto b/proto/human.proto index 89fd076..c586599 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -66,6 +66,21 @@ message HumanConnection {
66 // If true, this connection will only be logically allowed if the Daedalus 66 // If true, this connection will only be logically allowed if the Daedalus
67 // Roof Access option is enabled. 67 // Roof Access option is enabled.
68 optional bool roof_access = 7; 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;
69} 84}
70 85
71message HumanConnections { 86message HumanConnections {
@@ -86,16 +101,29 @@ message HumanDoor {
86 optional uint64 complete_at = 9; 101 optional uint64 complete_at = 9;
87 102
88 optional string control_center_color = 6; 103 optional string control_center_color = 6;
89 repeated string switches = 7;
90 repeated KeyholderIdentifier keyholders = 10; 104 repeated KeyholderIdentifier keyholders = 10;
91 repeated RoomIdentifier rooms = 11; 105 repeated RoomIdentifier rooms = 11;
92 repeated DoorIdentifier doors = 12; 106 repeated DoorIdentifier doors = 12;
93 repeated string endings = 13; 107 optional bool white_ending = 13;
94 optional bool double_letters = 15; 108 optional bool double_letters = 15;
95 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;
113
96 optional DoorType type = 4; 114 optional DoorType type = 4;
97 optional string location_room = 5; 115 optional string location_room = 5;
98 optional string location_name = 14; 116 optional string location_name = 14;
117
118 // Non-item doors that are latched will stay open once opened, even if the
119 // opening trigger is deactivated. This applies to EVENT/LOCATION_ONLY doors,
120 // as well as item-locked doors when not shuffling doors.
121 optional bool latch = 17;
122
123 // If true, the client will treat this door like a location, even though no
124 // location is created for it in the generator. This helps provide backwards
125 // compatability with older worlds.
126 optional bool legacy_location = 18;
99} 127}
100 128
101message HumanDoors { 129message HumanDoors {
@@ -135,9 +163,16 @@ message HumanPainting {
135 163
136message HumanPort { 164message HumanPort {
137 optional string name = 1; 165 optional string name = 1;
166 optional string display_name = 8;
138 optional string path = 2; 167 optional string path = 2;
139 168
140 optional string orientation = 3; 169 optional bool no_shuffle = 7;
170
171 // These specify how the player should be placed when a randomized entrance
172 // sends them to this port. "rotation" is in degrees and is counter-clockwise
173 // from the positive X axis.
174 optional Vec3d destination = 3;
175 optional double rotation = 6;
141 optional AxisDirection gravity = 5 [default = Y_MINUS]; 176 optional AxisDirection gravity = 5 [default = Y_MINUS];
142 177
143 optional DoorIdentifier required_door = 4; 178 optional DoorIdentifier required_door = 4;
@@ -191,7 +226,18 @@ message HumanRoom {
191 226
192message HumanMap { 227message HumanMap {
193 optional string display_name = 1; 228 optional string display_name = 1;
229 optional MapType type = 4;
230
231 optional PortIdentifier worldport_entrance = 3;
232
233 // These two fields are used by the validator and nothing else. excluded_nodes
234 // are objects in the tscn that are intentionally not mentioned in the txtpb.
235 // custom_nodes are the reverse of that; objects that are mentioned in the
236 // txtpb but not present in the tscn. These are generally created dynamically
237 // by the game mod, but may also be used for places where the validator is
238 // just wrong about the contents of the map file.
194 repeated string excluded_nodes = 2; 239 repeated string excluded_nodes = 2;
240 repeated string custom_nodes = 5;
195} 241}
196 242
197message HumanProgressive { 243message HumanProgressive {
@@ -213,11 +259,17 @@ message HumanDoorGroups {
213 repeated HumanDoorGroup door_groups = 1; 259 repeated HumanDoorGroup door_groups = 1;
214} 260}
215 261
262message HumanGlobalMetadata {
263 repeated string special_names = 1;
264 optional VersionNumber version = 2;
265}
266
216message IdMappings { 267message IdMappings {
217 message RoomIds { 268 message RoomIds {
218 map<string, uint64> panels = 1; 269 map<string, uint64> panels = 1;
219 map<string, uint64> masteries = 2; 270 map<string, uint64> masteries = 2;
220 map<string, uint64> keyholders = 3; 271 map<string, uint64> keyholders = 3;
272 map<string, uint64> ports = 4;
221 } 273 }
222 274
223 message MapIds { 275 message MapIds {