syntax = "proto2";
package com.fourisland.lingo2_archipelago;
message Proxy {
optional string answer = 1;
optional string path = 2;
}
enum DoorType {
DOOR_TYPE_UNKNOWN = 0;
// This door is a location unless panelsanity is on, and it is an item as long as door shuffle is on.
STANDARD = 1;
// This door is never an item or a location.
EVENT = 2;
// This door is never a location, and is an item as long as door shuffle is on.
ITEM_ONLY = 3;
// This door is never a location, and is an item as long as control center color shuffle is on.
CONTROL_CENTER_COLOR = 4;
// This door is never an item, and is a location as long as panelsanity is not on.
LOCATION_ONLY = 5;
// This door is an item if gravestone shuffle is enabled, and is a location as long as panelsanity is not on.
GRAVESTONE = 6;
// This door is never a location, and is an item as long as gallery painting shuffle is on.
GALLERY_PAINTING = 7;
}
enum DoorGroupType {
DOOR_GROUP_TYPE_UNKNOWN = 0;
// These doors border a worldport. They should be grouped when connections are
// not shuffled.
CONNECTOR = 1;
// Similar to CONNECTOR, but these doors are also ordinarily opened by solving
// the COLOR panel in the Control Center. These should be grouped when
// connections are not shuffled, but are not items at all when control center
// colors are not shuffled.
COLOR_CONNECTOR = 2;
// Groups with this type become an item if cyan door behavior is set to item.
CYAN_DOORS = 3;
// Groups with this type always become an item if door shuffle is on.
SHUFFLE_GROUP = 4;
}
enum AxisDirection {
AXIS_DIRECTION_UNKNOWN = 0;
X_PLUS = 1;
X_MINUS = 2;
Y_PLUS = 3;
Y_MINUS = 4;
Z_PLUS = 5;
Z_MINUS = 6;
}
enum PuzzleSymbol {
PUZZLE_SYMBOL_UNKNOWN = 0;
SUN = 1;
SPARKLES = 2;
ZERO = 3;
EXAMPLE = 4;
BOXES = 5;
PLANET = 6;
PYRAMID = 7;
CROSS = 8;
SWEET = 9;
GENDER = 10;
AGE = 11;
SOUND = 12;
ANAGRAM = 13;
JOB = 14;
STARS = 15;
NULL = 16;
EVAL = 17;
LINGO = 18;
QUESTION = 19;
}
message ProxyIdentifier {
optional uint64 panel = 1;
optional string answer = 2;
}
message KeyholderAnswer {
optional uint64 keyholder = 1;
optional string key = 2;
}
message Connection {
optional uint64 from_room = 1;
optional uint64 to_room = 2;
optional uint64 required_door = 3;
oneof trigger {
uint64 port = 4;
uint64 painting = 5;
ProxyIdentifier panel = 6;
}
optional bool roof_access = 7;
}
message Door {
optional uint64 id = 1;
optional uint64 ap_id = 11;
optional uint64 map_id = 9;
optional uint64 room_id = 10;
optional string name = 2;
repeated string receivers = 3;
repeated uint64 move_paintings = 4;
repeated ProxyIdentifier panels = 5;
optional uint64 complete_at = 12;
optional string control_center_color = 6;
repeated KeyholderAnswer keyholders = 13;
repeated uint64 rooms = 14;
repeated uint64 doors = 15;
repeated uint64 endings = 16;
optional bool double_letters = 18;
repeated string senders = 19;
optional DoorType type = 8;
optional string location_name = 17;
}
message PanelData {
optional uint64 id = 1;
optional uint64 ap_id = 10;
optional uint64 room_id = 2;
optional string name = 3;
optional string path = 4;
optional string clue = 5;
optional string answer = 6;
repeated PuzzleSymbol symbols = 7;
repeated Proxy proxies = 8;
optional uint64 required_door = 9;
optional uint64 required_room = 11;
optional string display_name = 12;
}
message PaintingData {
optional uint64 id = 1;
optional uint64 room_id = 2;
optional string name = 9;
optional string path = 10;
optional string display_name = 4;
optional string orientation = 3;
optional bool move = 6;
optional bool enter_only = 7;
optional AxisDirection gravity = 8;
optional bool exit_only = 11;
optional uint64 required_door = 5;
}
message Port {
optional uint64 id = 1;
optional uint64 room_id = 2;
optional string name = 3;
optional string path = 4;
optional string orientation = 5;
optional AxisDirection gravity = 7;
optional uint64 required_door = 6;
}
message KeyholderData {
optional uint64 id = 1;
optional uint64 ap_id = 6;
optional uint64 room_id = 2;
optional string name = 3;
optional string path = 4;
optional string key = 5;
}
message Letter {
optional uint64 id = 3;
optional uint64 ap_id = 5;
optional uint64 room_id = 4;
optional string key = 1;
optional bool level2 = 2;
optional string path = 6;
}
message Mastery {
optional uint64 id = 1;
optional uint64 ap_id = 2;
optional uint64 room_id = 3;
optional string name = 4;
optional string path = 5;
}
message Ending {
optional uint64 id = 1;
optional uint64 ap_id = 2;
optional uint64 room_id = 3;
optional string name = 4;
optional string path = 5;
}
message Room {
optional uint64 id = 1;
optional uint64 map_id = 8;
optional string name = 2;
optional string display_name = 3;
optional string panel_display_name = 13;
repeated uint64 panels = 4;
repeated uint64 paintings = 5;
repeated uint64 letters = 6;
repeated uint64 ports = 7;
repeated uint64 doors = 9;
repeated uint64 masteries = 10;
repeated uint64 keyholders = 11;
repeated uint64 endings = 12;
}
message Map {
optional uint64 id = 1;
optional string name = 2;
optional string display_name = 3;
}
message Progressive {
optional uint64 id = 1;
optional string name = 2;
optional uint64 ap_id = 3;
repeated uint64 doors = 4;
}
message DoorGroup {
optional uint64 id = 1;
optional string name = 2;
optional uint64 ap_id = 3;
optional DoorGroupType type = 4;
repeated uint64 doors = 5;
}
message AllObjects {
optional uint64 version = 15;
repeated Map maps = 7;
repeated Room rooms = 1;
repeated Door doors = 2;
repeated PanelData panels = 3;
repeated PaintingData paintings = 4;
repeated Port ports = 5;
repeated KeyholderData keyholders = 11;
repeated Letter letters = 9;
repeated Mastery masteries = 10;
repeated Ending endings = 12;
repeated Connection connections = 6;
repeated Progressive progressives = 13;
repeated DoorGroup door_groups = 14;
map<string, uint64> special_ids = 8;
}