about summary refs log tree commit diff stats
path: root/proto/human.proto
diff options
context:
space:
mode:
Diffstat (limited to 'proto/human.proto')
-rw-r--r--proto/human.proto99
1 files changed, 96 insertions, 3 deletions
diff --git a/proto/human.proto b/proto/human.proto index 1a15c59..c586599 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,29 @@ 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 optional bool white_ending = 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;
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;
93} 127}
94 128
95message HumanDoors { 129message HumanDoors {
@@ -108,6 +142,8 @@ message HumanPanel {
108 142
109 optional DoorIdentifier required_door = 7; 143 optional DoorIdentifier required_door = 7;
110 optional RoomIdentifier required_room = 8; 144 optional RoomIdentifier required_room = 8;
145
146 optional string display_name = 9;
111} 147}
112 148
113message HumanPainting { 149message HumanPainting {
@@ -127,9 +163,16 @@ message HumanPainting {
127 163
128message HumanPort { 164message HumanPort {
129 optional string name = 1; 165 optional string name = 1;
166 optional string display_name = 8;
130 optional string path = 2; 167 optional string path = 2;
131 168
132 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;
133 optional AxisDirection gravity = 5 [default = Y_MINUS]; 176 optional AxisDirection gravity = 5 [default = Y_MINUS];
134 177
135 optional DoorIdentifier required_door = 4; 178 optional DoorIdentifier required_door = 4;
@@ -138,6 +181,13 @@ message HumanPort {
138message HumanKeyholder { 181message HumanKeyholder {
139 optional string name = 1; 182 optional string name = 1;
140 optional string path = 2; 183 optional string path = 2;
184
185 // If this is set, the keyholder will become a location when keyholder shuffle
186 // is enabled. This value specifies the key that is required to clear the
187 // location. It should be the same as the key needed for Green Ending. The
188 // only cases when this shouldn't be set is the two disappearing keyholders in
189 // The Congruent.
190 optional string key = 3;
141} 191}
142 192
143message HumanLetter { 193message HumanLetter {
@@ -161,6 +211,10 @@ message HumanRoom {
161 optional string name = 1; 211 optional string name = 1;
162 optional string display_name = 2; 212 optional string display_name = 2;
163 213
214 // This is used in panelsanity location names and location names for STANDARD
215 // doors generated from panels in the same area.
216 optional string panel_display_name = 10;
217
164 repeated HumanPanel panels = 3; 218 repeated HumanPanel panels = 3;
165 repeated HumanPainting paintings = 4; 219 repeated HumanPainting paintings = 4;
166 repeated HumanLetter letters = 5; 220 repeated HumanLetter letters = 5;
@@ -172,13 +226,50 @@ message HumanRoom {
172 226
173message HumanMap { 227message HumanMap {
174 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.
175 repeated string excluded_nodes = 2; 239 repeated string excluded_nodes = 2;
240 repeated string custom_nodes = 5;
241}
242
243message HumanProgressive {
244 optional string name = 1;
245 repeated DoorIdentifier doors = 2;
246}
247
248message HumanProgressives {
249 repeated HumanProgressive progressives = 1;
250}
251
252message HumanDoorGroup {
253 optional string name = 1;
254 optional DoorGroupType type = 2;
255 repeated DoorIdentifier doors = 3;
256}
257
258message HumanDoorGroups {
259 repeated HumanDoorGroup door_groups = 1;
260}
261
262message HumanGlobalMetadata {
263 repeated string special_names = 1;
264 optional VersionNumber version = 2;
176} 265}
177 266
178message IdMappings { 267message IdMappings {
179 message RoomIds { 268 message RoomIds {
180 map<string, uint64> panels = 1; 269 map<string, uint64> panels = 1;
181 map<string, uint64> masteries = 2; 270 map<string, uint64> masteries = 2;
271 map<string, uint64> keyholders = 3;
272 map<string, uint64> ports = 4;
182 } 273 }
183 274
184 message MapIds { 275 message MapIds {
@@ -190,4 +281,6 @@ message IdMappings {
190 map<string, uint64> special = 2; 281 map<string, uint64> special = 2;
191 map<string, uint64> letters = 3; 282 map<string, uint64> letters = 3;
192 map<string, uint64> endings = 4; 283 map<string, uint64> endings = 4;
284 map<string, uint64> progressives = 5;
285 map<string, uint64> door_groups = 6;
193} 286}