about summary refs log tree commit diff stats
path: root/proto/data.proto
diff options
context:
space:
mode:
Diffstat (limited to 'proto/data.proto')
-rw-r--r--proto/data.proto308
1 files changed, 233 insertions, 75 deletions
diff --git a/proto/data.proto b/proto/data.proto index fd38cfd..e9cc7d7 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -1,130 +1,264 @@
1edition = "2023"; 1syntax = "proto2";
2
3import "common.proto";
4 2
5package com.fourisland.lingo2_archipelago; 3package com.fourisland.lingo2_archipelago;
6 4
5message Proxy {
6 optional string answer = 1;
7 optional string path = 2;
8}
9
10enum DoorType {
11 DOOR_TYPE_UNKNOWN = 0;
12
13 // This door is a location unless panelsanity is on, and it is an item as long as door shuffle is on.
14 STANDARD = 1;
15
16 // This door is never an item or a location.
17 EVENT = 2;
18
19 // This door is never a location, and is an item as long as door shuffle is on.
20 ITEM_ONLY = 3;
21
22 // This door is never a location, and is an item as long as control center color shuffle is on.
23 CONTROL_CENTER_COLOR = 4;
24
25 // This door is never an item, and is a location as long as panelsanity is not on.
26 LOCATION_ONLY = 5;
27
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;
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;
53}
54
55enum MapType {
56 NORMAL_MAP = 0;
57 ICARUS = 1;
58 GIFT_MAP = 2;
59 DEMO = 3;
60}
61
62enum AxisDirection {
63 AXIS_DIRECTION_UNKNOWN = 0;
64
65 X_PLUS = 1;
66 X_MINUS = 2;
67 Y_PLUS = 3;
68 Y_MINUS = 4;
69 Z_PLUS = 5;
70 Z_MINUS = 6;
71}
72
73enum PuzzleSymbol {
74 PUZZLE_SYMBOL_UNKNOWN = 0;
75
76 SUN = 1;
77 SPARKLES = 2;
78 ZERO = 3;
79 EXAMPLE = 4;
80 BOXES = 5;
81 PLANET = 6;
82 PYRAMID = 7;
83 CROSS = 8;
84 SWEET = 9;
85 GENDER = 10;
86 AGE = 11;
87 SOUND = 12;
88 ANAGRAM = 13;
89 JOB = 14;
90 STARS = 15;
91 NULL = 16;
92 EVAL = 17;
93 LINGO = 18;
94 QUESTION = 19;
95}
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
7message ProxyIdentifier { 109message ProxyIdentifier {
8 uint64 panel = 1; 110 optional uint64 panel = 1;
9 string answer = 2; 111 optional string answer = 2;
10} 112}
11 113
12message KeyholderAnswer { 114message KeyholderAnswer {
13 uint64 keyholder = 1; 115 optional uint64 keyholder = 1;
14 string key = 2; 116 optional string key = 2;
15} 117}
16 118
17message Connection { 119message Connection {
18 uint64 from_room = 1; 120 optional uint64 from_room = 1;
19 uint64 to_room = 2; 121 optional uint64 to_room = 2;
20 uint64 required_door = 3; 122 optional uint64 required_door = 3;
21 123
22 oneof trigger { 124 oneof trigger {
23 uint64 port = 4; 125 uint64 port = 4;
24 uint64 painting = 5; 126 uint64 painting = 5;
25 ProxyIdentifier panel = 6; 127 ProxyIdentifier panel = 6;
26 } 128 }
129
130 optional bool roof_access = 7;
131 optional bool purple_ending = 8;
132 optional bool cyan_ending = 9;
133 optional bool vanilla_only = 10;
27} 134}
28 135
29message Door { 136message Door {
30 uint64 id = 1; 137 optional uint64 id = 1;
31 uint64 ap_id = 11; 138 optional uint64 ap_id = 11;
32 uint64 map_id = 9; 139 optional uint64 map_id = 9;
33 uint64 room_id = 10; 140 optional uint64 room_id = 10;
34 string name = 2; 141 optional string name = 2;
35 142
36 repeated string receivers = 3; 143 repeated string receivers = 3;
37 repeated uint64 move_paintings = 4; 144 repeated uint64 move_paintings = 4;
38 145
39 repeated ProxyIdentifier panels = 5; 146 repeated ProxyIdentifier panels = 5;
40 uint64 complete_at = 12; 147 optional uint64 complete_at = 12;
41 148
42 string control_center_color = 6; 149 optional string control_center_color = 6;
43 repeated string switches = 7;
44 repeated KeyholderAnswer keyholders = 13; 150 repeated KeyholderAnswer keyholders = 13;
45 repeated uint64 rooms = 14; 151 repeated uint64 rooms = 14;
152 repeated uint64 doors = 15;
153 optional bool white_ending = 16;
154 optional bool double_letters = 18;
155 repeated string senders = 19;
156
157 optional DoorType type = 8;
158 optional bool latch = 20;
159 optional bool legacy_location = 21;
46 160
47 DoorType type = 8; 161 optional string location_name = 17;
48} 162}
49 163
50message Panel { 164message PanelData {
51 uint64 id = 1; 165 optional uint64 id = 1;
52 uint64 ap_id = 10; 166 optional uint64 ap_id = 10;
53 uint64 room_id = 2; 167 optional uint64 room_id = 2;
54 string name = 3; 168 optional string name = 3;
55 169
56 string path = 4; 170 optional string path = 4;
57 string clue = 5; 171 optional string clue = 5;
58 string answer = 6; 172 optional string answer = 6;
59 repeated string symbols = 7; 173 repeated PuzzleSymbol symbols = 7;
60 174
61 repeated Proxy proxies = 8; 175 repeated Proxy proxies = 8;
62 176
63 uint64 required_door = 9; 177 optional uint64 required_door = 9;
64 uint64 required_room = 11; 178 optional uint64 required_room = 11;
179
180 optional string display_name = 12;
65} 181}
66 182
67message Painting { 183message PaintingData {
68 uint64 id = 1; 184 optional uint64 id = 1;
69 uint64 room_id = 2; 185 optional uint64 room_id = 2;
70 string name = 9; 186 optional string name = 9;
71 187
72 string path = 10; 188 optional string path = 10;
73 string display_name = 4; 189 optional string display_name = 4;
74 190
75 string orientation = 3; 191 optional string orientation = 3;
76 bool move = 6; 192 optional bool move = 6;
77 bool enter_only = 7; 193 optional bool enter_only = 7;
78 bool flipped = 8; 194 optional AxisDirection gravity = 8;
79 bool exit_only = 11; 195 optional bool exit_only = 11;
80 196
81 uint64 required_door = 5; 197 optional uint64 required_door = 5;
82} 198}
83 199
84message Port { 200message Port {
85 uint64 id = 1; 201 optional uint64 id = 1;
86 uint64 room_id = 2; 202 optional uint64 ap_id = 11;
87 string name = 3; 203 optional uint64 room_id = 2;
88 204 optional string name = 3;
89 string path = 4; 205
90 string orientation = 5; 206 optional string display_name = 10;
91 207 optional string path = 4;
92 uint64 required_door = 6; 208 optional Vec3d destination = 5;
209 optional double rotation = 8;
210 optional AxisDirection gravity = 7;
211 optional bool no_shuffle = 9;
212
213 optional uint64 required_door = 6;
93} 214}
94 215
95message Keyholder { 216message KeyholderData {
96 uint64 id = 1; 217 optional uint64 id = 1;
97 uint64 room_id = 2; 218 optional uint64 ap_id = 6;
219 optional uint64 room_id = 2;
98 220
99 string name = 3; 221 optional string name = 3;
100 string path = 4; 222 optional string path = 4;
223 optional string key = 5;
101} 224}
102 225
103message Letter { 226message Letter {
104 uint64 id = 3; 227 optional uint64 id = 3;
105 uint64 ap_id = 5; 228 optional uint64 ap_id = 5;
106 uint64 room_id = 4; 229 optional uint64 room_id = 4;
107 230
108 string key = 1; 231 optional string key = 1;
109 bool double = 2; 232 optional bool level2 = 2;
110 233
111 string path = 6; 234 optional string path = 6;
112} 235}
113 236
114message Mastery { 237message Mastery {
115 uint64 id = 1; 238 optional uint64 id = 1;
116 uint64 ap_id = 2; 239 optional uint64 ap_id = 2;
117 uint64 room_id = 3; 240 optional uint64 room_id = 3;
241
242 optional string name = 4;
243 optional string path = 5;
244}
245
246message Ending {
247 optional uint64 id = 1;
248 optional uint64 ap_id = 2;
249 optional uint64 room_id = 3;
250
251 optional string name = 4;
118 252
119 string name = 4; 253 optional string path = 5;
120 string path = 5;
121} 254}
122 255
123message Room { 256message Room {
124 uint64 id = 1; 257 optional uint64 id = 1;
125 uint64 map_id = 8; 258 optional uint64 map_id = 8;
126 string name = 2; 259 optional string name = 2;
127 string display_name = 3; 260 optional string display_name = 3;
261 optional string panel_display_name = 13;
128 262
129 repeated uint64 panels = 4; 263 repeated uint64 panels = 4;
130 repeated uint64 paintings = 5; 264 repeated uint64 paintings = 5;
@@ -133,23 +267,47 @@ message Room {
133 repeated uint64 doors = 9; 267 repeated uint64 doors = 9;
134 repeated uint64 masteries = 10; 268 repeated uint64 masteries = 10;
135 repeated uint64 keyholders = 11; 269 repeated uint64 keyholders = 11;
270 repeated uint64 endings = 12;
136} 271}
137 272
138message Map { 273message Map {
139 uint64 id = 1; 274 optional uint64 id = 1;
140 string name = 2; 275 optional string name = 2;
276 optional string display_name = 3;
277 optional uint64 worldport_entrance = 4;
278 optional MapType type = 5;
279}
280
281message Progressive {
282 optional uint64 id = 1;
283 optional string name = 2;
284 optional uint64 ap_id = 3;
285 repeated uint64 doors = 4;
286}
287
288message DoorGroup {
289 optional uint64 id = 1;
290 optional string name = 2;
291 optional uint64 ap_id = 3;
292 optional DoorGroupType type = 4;
293 repeated uint64 doors = 5;
141} 294}
142 295
143message AllObjects { 296message AllObjects {
297 optional VersionNumber version = 15;
298
144 repeated Map maps = 7; 299 repeated Map maps = 7;
145 repeated Room rooms = 1; 300 repeated Room rooms = 1;
146 repeated Door doors = 2; 301 repeated Door doors = 2;
147 repeated Panel panels = 3; 302 repeated PanelData panels = 3;
148 repeated Painting paintings = 4; 303 repeated PaintingData paintings = 4;
149 repeated Port ports = 5; 304 repeated Port ports = 5;
150 repeated Keyholder keyholders = 11; 305 repeated KeyholderData keyholders = 11;
151 repeated Letter letters = 9; 306 repeated Letter letters = 9;
152 repeated Mastery masteries = 10; 307 repeated Mastery masteries = 10;
308 repeated Ending endings = 12;
153 repeated Connection connections = 6; 309 repeated Connection connections = 6;
310 repeated Progressive progressives = 13;
311 repeated DoorGroup door_groups = 14;
154 map<string, uint64> special_ids = 8; 312 map<string, uint64> special_ids = 8;
155} 313}