doors { name: "Control Center Entrance" type: EVENT panels { room: "Control Center Entrance" name: "ZERO" } } doors { name: "K Entered" type: EVENT keyholders { room: "Main Area" name: "K" key: "k" } } doors { name: "Paintings Door" type: ITEM_ONLY receivers: "Components/Doors/entry_3" rooms { name: "Main Area" } } doors { name: "Wisdom Door" type: EVENT panels { room: "Wisdom Room" name: "WISDOM" } } doors { name: "Color Door" type: EVENT panels { room: "Color Room" name: "COLOR" } } doors { name: "Tower Door" type: EVENT panels { room: "Tower Room" name: "TOWER" } } doors { name: "Mastery" type: EVENT panels { room: "Paintings Room" name: "PAINTINGS" } panels { room: "Wisdom Room" name: "WISDOM" } panels { room: "Color Room" name: "COLOR" } panels { room: "Tower Room" name: "TOWER" } } 8d9f67e00a5ac42b002007d11dd51a659'>this commit Randomizer for LINGO 2 using Archipelago Multiworld
about summary refs log blame commit diff stats
path: root/proto/data.proto
blob: 498543c642b2fc463eb9c838fc34a51e92e7f3a6 (plain) (tree)
^
1
2
3
4
                  
 

                                          





















                                                                                                       


                                                                                                               












                             
                         

                             

 
                         

                                

 
                    


                                    








                              




                               




                                      
                                   
 
                                           
                               

                                           
                             
 
                             

 




                              
 


                             



                              

                                     


                  











                                     
  
                                    


              


                              
 


                                     
 
                                    

 
                   

                              
 

                           

 
                


                              
 

                           
 
                           


                 


                              
 

                           

 









                              
              



                                   


                                
                              
                            
                            
                                 
                                  
                               

 
             

                           
                                   

 
                    
                        

                          
                                

                                  
                                     

                                  
                               
                                      
                                      
 
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 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;

  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 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 Ending endings = 12;
  repeated Connection connections = 6;
  map<string, uint64> special_ids = 8;
}