extends Node var SCRIPT_doorControl var SCRIPT_effects var SCRIPT_location var SCRIPT_multiplayer var SCRIPT_mypainting var SCRIPT_notifier var SCRIPT_panel var SCRIPT_pilgrimage_terminator var SCRIPT_textclient var SCRIPT_uuid var ap_server = "" var ap_user = "" var ap_pass = "" var confusify_world = false var enable_multiplayer = false var track_player = false var connection_history = [] const my_version = "4.2.1" const ap_version = {"major": 0, "minor": 5, "build": 0, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" ] const progressive_items = { "Progressive Orange Tower": ["Second Floor", "Third Floor", "Fourth Floor", "Fifth Floor", "Sixth Floor", "Seventh Floor"], "Progressive Art Gallery": ["Second Floor", "Third Floor", "Fourth Floor", "Fifth Floor", "Exit"], "Progressive Hallway Room": ["First Door", "Second Door", "Third Door", "Fourth Door"], "Progressive Fearless": ["Second Floor", "Third Floor"], "Progressive Colorful": ["White", "Black", "Red", "Yellow", "Blue", "Purple", "Orange", "Green", "Brown", "Gray"], "Progressive Pilgrimage": ["1 Sunwarp", "2 Sunwarp", "3 Sunwarp", "4 Sunwarp", "5 Sunwarp", "6 Sunwarp"] } const kTHE_END = 0 const kTHE_MASTER = 1 const kLEVEL_2 = 2 const kPILGRIMAGE = 3 const kNO_PANEL_SHUFFLE = 0 const kREARRANGE_PANELS = 1 const kCLASSIFICATION_LOCAL_NORMAL = 1 const kCLASSIFICATION_LOCAL_REDUCED = 2 const kCLASSIFICATION_LOCAL_INSANITY = 4 const kCLASSIFICATION_LOCAL_SMALL_SPHERE_ONE = 8 const kCLASSIFICATION_REMOTE_NORMAL = 0 const kCLASSIFICATION_REMOTE_REDUCED = 1 const kCLASSIFICATION_REMOTE_INSANITY = 2 const kSUNWARP_ACCESS_NORMAL = 0 const kSUNWARP_ACCESS_DISABLED = 1 const kSUNWARP_ACCESS_UNLOCK = 2 const kSUNWARP_ACCESS_INDIVIDUAL = 3 const kSUNWARP_ACCESS_PROGRESSIVE = 4 var _client = WebSocketClient.new() var _should_process = false var _initiated_disconnect = false var _try_wss = false var _datapackages = {} var _pending_packages = [] var _item_id_to_name = {} # All games var _location_id_to_name = {} # All games var _item_name_to_id = {} # LINGO only var _location_name_to_id = {} # LINGO only var _remote_version = {"major": 0, "minor": 0, "build": 0} var _gen_version = {"major": 0, "minor": 0, "build": 0} # TODO: caching per MW/slot, reset between connections var _authenticated = false var _seed = "" var _team = 0 var _slot = 0 var _players = [] var _player_name_by_slot = {} var _game_by_player = {} var _checked_locations = [] var _slot_data = {} var _paintings_mapping = {} var _localdata_file = "" var _death_link = false var _victory_condition = 0 # THE END, THE MASTER, LEVEL 2 var _door_shuffle = false var _color_shuffle = false var _panel_shuffle = 0 # none, rearrange var _painting_shuffle = false var _sunwarp_access = 0 # normal, disabled, unlock, progressive var _mastery_achievements = 21 var _level_2_requirement = 223 var _location_classification_bit = 0 var _early_color_hallways = false var _pilgrimage_compatibility = false # set to true for pre-0.4.6 var _pilgrimage_enabled = false var _pilgrimage_allows_roof_access = false var _pilgrimage_allows_paintings = false var _sunwarp_shuffle = false var _sunwarp_mapping = [] var _speed_boost_mode = false var _slot_seed = 0 var _map_loaded = false var _held_items = [] var _held_locations = [] var _last_new_item = -1 var _progressive_progress = {} var _has_colors = ["white"] var _received_indexes = [] var _puzzle_skips = 0 var _cached_slowness = 0 var _cached_iceland = 0 var _cached_atbash = 0 var _cached_speed_boosts = 0 var _geronimo_skip = false var _checked_paintings = [] var _hints_key = "" var _hinted_locations = [] signal could_not_connect signal connect_status signal client_connected signal evaluate_solvability func _init(): global._print("Instantiated APClient") # Read AP settings from file, if there are any var file = File.new() if file.file_exists("user://settings/archipelago"): file.open("user://settings/archipelago", File.READ) var data = file.get_var(true) file.close() if typeof(data) != TYPE_ARRAY: global._print("AP settings file is corrupted") data = [] if data.size() > 0: ap_server = data[0] if data.size() > 1: ap_user = data[1] if data.size() > 2: ap_pass = data[2] if data.size() > 3: _datapackages = data[3] if data.size() > 4: confusify_world = data[4] if data.size() > 5: enable_multiplayer = data[5] if data.size() > 6: track_player = data[6] if data.size() > 7: connection_history = data[7] process
name: "Back Area"
panels {
name: "COLOR"
path: "Panels/Entry/panel_3"
clue: "color"
answer: "brown"
symbols: EXAMPLE
}
ports {
name: "DAEDALUS"
display_name: "Dark Hallway"
path: "Components/Warps/worldport2"
destination { x: 10 y: 0 z: -84.5 }
rotation: 180
}