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; } enum AxisDirection { AXIS_DIRECTION_UNKNOWN = 0; X_PLUS = 1; X_MINUS = 2; Y_PLUS = 3; Y_MINUS = 4; Z_PLUS = 5; Z_MINUS = 6; } 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; } } 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 string switches = 7; repeated KeyholderAnswer keyholders = 13; repeated uint64 rooms = 14; repeated uint64 doors = 15; optional DoorType type = 8; } 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 string symbols = 7; repeated Proxy proxies = 8; optional uint64 required_door = 9; optional uint64 required_room = 11; } message Painting { 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 Keyholder { optional uint64 id = 1; optional uint64 room_id = 2; optional string name = 3; optional string path = 4; } 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 Room { optional uint64 id = 1; optional uint64 map_id = 8; optional string name = 2; optional string display_name = 3; 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; } message Map { optional uint64 id = 1; optional string name = 2; } message AllObjects { repeated Map maps = 7; repeated Room rooms = 1; repeated Door doors = 2; repeated PanelData panels = 3; repeated Painting paintings = 4; repeated Port ports = 5; repeated Keyholder keyholders = 11; repeated Letter letters = 9; repeated Mastery masteries = 10; repeated Connection connections = 6; map special_ids = 8; }