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.proto54
-rw-r--r--proto/human.proto57
2 files changed, 105 insertions, 6 deletions
diff --git a/proto/data.proto b/proto/data.proto index 64e3ddc..619b3d3 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -52,6 +52,13 @@ enum DoorGroupType {
52 SHUFFLE_GROUP = 4; 52 SHUFFLE_GROUP = 4;
53} 53}
54 54
55enum MapType {
56 NORMAL_MAP = 0;
57 ICARUS = 1;
58 GIFT_MAP = 2;
59 DEMO = 3;
60}
61
55enum AxisDirection { 62enum AxisDirection {
56 AXIS_DIRECTION_UNKNOWN = 0; 63 AXIS_DIRECTION_UNKNOWN = 0;
57 64
@@ -87,6 +94,24 @@ enum PuzzleSymbol {
87 QUESTION = 19; 94 QUESTION = 19;
88} 95}
89 96
97enum DaedalusOnlyMode {
98 DAED_ONLY_DISALLOW = 0;
99 DAED_ONLY_PARTIAL = 1;
100 DAED_ONLY_ALLOW = 2;
101}
102
103message Vec3d {
104 optional double x = 1;
105 optional double y = 2;
106 optional double z = 3;
107}
108
109message VersionNumber {
110 optional uint64 major = 1;
111 optional uint64 minor = 2;
112 optional uint64 patch = 3;
113}
114
90message ProxyIdentifier { 115message ProxyIdentifier {
91 optional uint64 panel = 1; 116 optional uint64 panel = 1;
92 optional string answer = 2; 117 optional string answer = 2;
@@ -111,6 +136,8 @@ message Connection {
111 optional bool roof_access = 7; 136 optional bool roof_access = 7;
112 optional bool purple_ending = 8; 137 optional bool purple_ending = 8;
113 optional bool cyan_ending = 9; 138 optional bool cyan_ending = 9;
139 optional bool mint_ending = 11;
140 optional bool vanilla_only = 10;
114} 141}
115 142
116message Door { 143message Door {
@@ -130,13 +157,17 @@ message Door {
130 repeated KeyholderAnswer keyholders = 13; 157 repeated KeyholderAnswer keyholders = 13;
131 repeated uint64 rooms = 14; 158 repeated uint64 rooms = 14;
132 repeated uint64 doors = 15; 159 repeated uint64 doors = 15;
133 repeated uint64 endings = 16; 160 optional bool white_ending = 16;
134 optional bool double_letters = 18; 161 optional bool double_letters = 18;
135 repeated string senders = 19; 162 repeated string senders = 19;
136 163
137 optional DoorType type = 8; 164 optional DoorType type = 8;
165 optional bool latch = 20;
166 optional bool legacy_location = 21;
138 167
139 optional string location_name = 17; 168 optional string location_name = 17;
169 optional bool daedalus_only_allow = 22;
170 optional bool daedalus_only_always_item = 23;
140} 171}
141 172
142message PanelData { 173message PanelData {
@@ -155,6 +186,8 @@ message PanelData {
155 optional uint64 required_door = 9; 186 optional uint64 required_door = 9;
156 optional uint64 required_room = 11; 187 optional uint64 required_room = 11;
157 188
189 optional bool exclude_from_panelsanity = 13;
190
158 optional string display_name = 12; 191 optional string display_name = 12;
159} 192}
160 193
@@ -177,12 +210,16 @@ message PaintingData {
177 210
178message Port { 211message Port {
179 optional uint64 id = 1; 212 optional uint64 id = 1;
213 optional uint64 ap_id = 11;
180 optional uint64 room_id = 2; 214 optional uint64 room_id = 2;
181 optional string name = 3; 215 optional string name = 3;
182 216
217 optional string display_name = 10;
183 optional string path = 4; 218 optional string path = 4;
184 optional string orientation = 5; 219 optional Vec3d destination = 5;
220 optional double rotation = 8;
185 optional AxisDirection gravity = 7; 221 optional AxisDirection gravity = 7;
222 optional bool no_shuffle = 9;
186 223
187 optional uint64 required_door = 6; 224 optional uint64 required_door = 6;
188} 225}
@@ -233,6 +270,7 @@ message Room {
233 optional string name = 2; 270 optional string name = 2;
234 optional string display_name = 3; 271 optional string display_name = 3;
235 optional string panel_display_name = 13; 272 optional string panel_display_name = 13;
273 optional bool daedalus_only_allow = 14;
236 274
237 repeated uint64 panels = 4; 275 repeated uint64 panels = 4;
238 repeated uint64 paintings = 5; 276 repeated uint64 paintings = 5;
@@ -248,6 +286,14 @@ message Map {
248 optional uint64 id = 1; 286 optional uint64 id = 1;
249 optional string name = 2; 287 optional string name = 2;
250 optional string display_name = 3; 288 optional string display_name = 3;
289 optional DaedalusOnlyMode daedalus_only_mode = 6;
290 optional uint64 worldport_entrance = 4;
291 optional MapType type = 5;
292
293 optional uint64 rte_room = 7;
294 optional uint64 rte_ap_id = 8;
295 optional Vec3d rte_trigger_pos = 9;
296 optional Vec3d rte_trigger_scale = 10;
251} 297}
252 298
253message Progressive { 299message Progressive {
@@ -263,10 +309,12 @@ message DoorGroup {
263 optional uint64 ap_id = 3; 309 optional uint64 ap_id = 3;
264 optional DoorGroupType type = 4; 310 optional DoorGroupType type = 4;
265 repeated uint64 doors = 5; 311 repeated uint64 doors = 5;
312
313 optional bool daedalus_only_always_item = 6;
266} 314}
267 315
268message AllObjects { 316message AllObjects {
269 optional uint64 version = 15; 317 optional VersionNumber version = 15;
270 318
271 repeated Map maps = 7; 319 repeated Map maps = 7;
272 repeated Room rooms = 1; 320 repeated Room rooms = 1;
diff --git a/proto/human.proto b/proto/human.proto index c247edf..5cd8ce7 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -78,6 +78,13 @@ message HumanConnection {
78 // This means that the connection should additionally require all cyan letters 78 // This means that the connection should additionally require all cyan letters
79 // when the Strict Cyan Ending option is on. 79 // when the Strict Cyan Ending option is on.
80 optional bool cyan_ending = 10; 80 optional bool cyan_ending = 10;
81
82 // This means that the connection should additionally require being able to
83 // type a specific text string when Custom Mint Ending is on.
84 optional bool mint_ending = 12;
85
86 // This means that the connection only exists when doors are not shuffled.
87 optional bool vanilla_only = 11;
81} 88}
82 89
83message HumanConnections { 90message HumanConnections {
@@ -101,7 +108,7 @@ message HumanDoor {
101 repeated KeyholderIdentifier keyholders = 10; 108 repeated KeyholderIdentifier keyholders = 10;
102 repeated RoomIdentifier rooms = 11; 109 repeated RoomIdentifier rooms = 11;
103 repeated DoorIdentifier doors = 12; 110 repeated DoorIdentifier doors = 12;
104 repeated string endings = 13; 111 optional bool white_ending = 13;
105 optional bool double_letters = 15; 112 optional bool double_letters = 15;
106 113
107 // Sender nodes to be added to the list of requirements for triggering the 114 // Sender nodes to be added to the list of requirements for triggering the
@@ -111,6 +118,19 @@ message HumanDoor {
111 optional DoorType type = 4; 118 optional DoorType type = 4;
112 optional string location_room = 5; 119 optional string location_room = 5;
113 optional string location_name = 14; 120 optional string location_name = 14;
121
122 // Non-item doors that are latched will stay open once opened, even if the
123 // opening trigger is deactivated. This applies to EVENT/LOCATION_ONLY doors,
124 // as well as item-locked doors when not shuffling doors.
125 optional bool latch = 17;
126
127 // If true, the client will treat this door like a location, even though no
128 // location is created for it in the generator. This helps provide backwards
129 // compatability with older worlds.
130 optional bool legacy_location = 18;
131
132 optional bool daedalus_only_allow = 19;
133 optional bool daedalus_only_always_item = 20;
114} 134}
115 135
116message HumanDoors { 136message HumanDoors {
@@ -130,6 +150,8 @@ message HumanPanel {
130 optional DoorIdentifier required_door = 7; 150 optional DoorIdentifier required_door = 7;
131 optional RoomIdentifier required_room = 8; 151 optional RoomIdentifier required_room = 8;
132 152
153 optional bool exclude_from_panelsanity = 10;
154
133 optional string display_name = 9; 155 optional string display_name = 9;
134} 156}
135 157
@@ -150,9 +172,16 @@ message HumanPainting {
150 172
151message HumanPort { 173message HumanPort {
152 optional string name = 1; 174 optional string name = 1;
175 optional string display_name = 8;
153 optional string path = 2; 176 optional string path = 2;
154 177
155 optional string orientation = 3; 178 optional bool no_shuffle = 7;
179
180 // These specify how the player should be placed when a randomized entrance
181 // sends them to this port. "rotation" is in degrees and is counter-clockwise
182 // from the positive X axis.
183 optional Vec3d destination = 3;
184 optional double rotation = 6;
156 optional AxisDirection gravity = 5 [default = Y_MINUS]; 185 optional AxisDirection gravity = 5 [default = Y_MINUS];
157 186
158 optional DoorIdentifier required_door = 4; 187 optional DoorIdentifier required_door = 4;
@@ -195,6 +224,8 @@ message HumanRoom {
195 // doors generated from panels in the same area. 224 // doors generated from panels in the same area.
196 optional string panel_display_name = 10; 225 optional string panel_display_name = 10;
197 226
227 optional bool daedalus_only_allow = 11;
228
198 repeated HumanPanel panels = 3; 229 repeated HumanPanel panels = 3;
199 repeated HumanPainting paintings = 4; 230 repeated HumanPainting paintings = 4;
200 repeated HumanLetter letters = 5; 231 repeated HumanLetter letters = 5;
@@ -206,7 +237,23 @@ message HumanRoom {
206 237
207message HumanMap { 238message HumanMap {
208 optional string display_name = 1; 239 optional string display_name = 1;
240 optional MapType type = 4;
241
242 optional DaedalusOnlyMode daedalus_only_mode = 6;
243
244 optional PortIdentifier worldport_entrance = 3;
245 optional string rte_room = 7;
246 optional Vec3d rte_trigger_pos = 8;
247 optional Vec3d rte_trigger_scale = 9;
248
249 // These two fields are used by the validator and nothing else. excluded_nodes
250 // are objects in the tscn that are intentionally not mentioned in the txtpb.
251 // custom_nodes are the reverse of that; objects that are mentioned in the
252 // txtpb but not present in the tscn. These are generally created dynamically
253 // by the game mod, but may also be used for places where the validator is
254 // just wrong about the contents of the map file.
209 repeated string excluded_nodes = 2; 255 repeated string excluded_nodes = 2;
256 repeated string custom_nodes = 5;
210} 257}
211 258
212message HumanProgressive { 259message HumanProgressive {
@@ -222,6 +269,8 @@ message HumanDoorGroup {
222 optional string name = 1; 269 optional string name = 1;
223 optional DoorGroupType type = 2; 270 optional DoorGroupType type = 2;
224 repeated DoorIdentifier doors = 3; 271 repeated DoorIdentifier doors = 3;
272
273 optional bool daedalus_only_always_item = 4;
225} 274}
226 275
227message HumanDoorGroups { 276message HumanDoorGroups {
@@ -230,7 +279,7 @@ message HumanDoorGroups {
230 279
231message HumanGlobalMetadata { 280message HumanGlobalMetadata {
232 repeated string special_names = 1; 281 repeated string special_names = 1;
233 optional uint64 version = 2; 282 optional VersionNumber version = 2;
234} 283}
235 284
236message IdMappings { 285message IdMappings {
@@ -238,11 +287,13 @@ message IdMappings {
238 map<string, uint64> panels = 1; 287 map<string, uint64> panels = 1;
239 map<string, uint64> masteries = 2; 288 map<string, uint64> masteries = 2;
240 map<string, uint64> keyholders = 3; 289 map<string, uint64> keyholders = 3;
290 map<string, uint64> ports = 4;
241 } 291 }
242 292
243 message MapIds { 293 message MapIds {
244 map<string, uint64> doors = 1; 294 map<string, uint64> doors = 1;
245 map<string, RoomIds> rooms = 2; 295 map<string, RoomIds> rooms = 2;
296 optional uint64 rte = 3;
246 } 297 }
247 298
248 map<string, MapIds> maps = 1; 299 map<string, MapIds> maps = 1;