about summary refs log tree commit diff stats
path: root/client/Archipelago/manager.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/Archipelago/manager.gd')
-rw-r--r--client/Archipelago/manager.gd29
1 files changed, 22 insertions, 7 deletions
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index 218870c..c804109 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd
@@ -46,11 +46,13 @@ var apworld_version = [0, 0]
46var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2 46var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2
47var daedalus_roof_access = false 47var daedalus_roof_access = false
48var keyholder_sanity = false 48var keyholder_sanity = false
49var port_pairings = {}
49var shuffle_control_center_colors = false 50var shuffle_control_center_colors = false
50var shuffle_doors = false 51var shuffle_doors = false
51var shuffle_gallery_paintings = false 52var shuffle_gallery_paintings = false
52var shuffle_letters = kSHUFFLE_LETTERS_VANILLA 53var shuffle_letters = kSHUFFLE_LETTERS_VANILLA
53var shuffle_symbols = false 54var shuffle_symbols = false
55var shuffle_worldports = false
54var strict_cyan_ending = false 56var strict_cyan_ending = false
55var strict_purple_ending = false 57var strict_purple_ending = false
56var victory_condition = -1 58var victory_condition = -1
@@ -380,6 +382,7 @@ func _client_connected(slot_data):
380 shuffle_gallery_paintings = bool(slot_data.get("shuffle_gallery_paintings", false)) 382 shuffle_gallery_paintings = bool(slot_data.get("shuffle_gallery_paintings", false))
381 shuffle_letters = int(slot_data.get("shuffle_letters", 0)) 383 shuffle_letters = int(slot_data.get("shuffle_letters", 0))
382 shuffle_symbols = bool(slot_data.get("shuffle_symbols", false)) 384 shuffle_symbols = bool(slot_data.get("shuffle_symbols", false))
385 shuffle_worldports = bool(slot_data.get("shuffle_worldports", false))
383 strict_cyan_ending = bool(slot_data.get("strict_cyan_ending", false)) 386 strict_cyan_ending = bool(slot_data.get("strict_cyan_ending", false))
384 strict_purple_ending = bool(slot_data.get("strict_purple_ending", false)) 387 strict_purple_ending = bool(slot_data.get("strict_purple_ending", false))
385 victory_condition = int(slot_data.get("victory_condition", 0)) 388 victory_condition = int(slot_data.get("victory_condition", 0))
@@ -387,6 +390,13 @@ func _client_connected(slot_data):
387 if slot_data.has("version"): 390 if slot_data.has("version"):
388 apworld_version = [int(slot_data["version"][0]), int(slot_data["version"][1])] 391 apworld_version = [int(slot_data["version"][0]), int(slot_data["version"][1])]
389 392
393 port_pairings.clear()
394 if slot_data.has("port_pairings"):
395 var raw_pp = slot_data.get("port_pairings")
396
397 for p1 in raw_pp.keys():
398 port_pairings[int(p1)] = int(raw_pp[p1])
399
390 # Set up item locks. 400 # Set up item locks.
391 _item_locks = {} 401 _item_locks = {}
392 402
@@ -404,12 +414,14 @@ func _client_connected(slot_data):
404 _item_locks[door.get_id()] = [progressive.get_ap_id(), i + 1] 414 _item_locks[door.get_id()] = [progressive.get_ap_id(), i + 1]
405 415
406 for door_group in gamedata.objects.get_door_groups(): 416 for door_group in gamedata.objects.get_door_groups():
407 if ( 417 if door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.CONNECTOR:
408 door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.CONNECTOR 418 if shuffle_worldports:
409 or door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.SHUFFLE_GROUP 419 continue
410 ): 420 elif door_group.get_type() != gamedata.SCRIPT_proto.DoorGroupType.SHUFFLE_GROUP:
411 for door in door_group.get_doors(): 421 continue
412 _item_locks[door] = [door_group.get_ap_id(), 1] 422
423 for door in door_group.get_doors():
424 _item_locks[door] = [door_group.get_ap_id(), 1]
413 425
414 if shuffle_control_center_colors: 426 if shuffle_control_center_colors:
415 for door in gamedata.objects.get_doors(): 427 for door in gamedata.objects.get_doors():
@@ -417,7 +429,10 @@ func _client_connected(slot_data):
417 _item_locks[door.get_id()] = [door.get_ap_id(), 1] 429 _item_locks[door.get_id()] = [door.get_ap_id(), 1]
418 430
419 for door_group in gamedata.objects.get_door_groups(): 431 for door_group in gamedata.objects.get_door_groups():
420 if door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.COLOR_CONNECTOR: 432 if (
433 door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.COLOR_CONNECTOR
434 and not shuffle_worldports
435 ):
421 for door in door_group.get_doors(): 436 for door in door_group.get_doors():
422 _item_locks[door] = [door_group.get_ap_id(), 1] 437 _item_locks[door] = [door_group.get_ap_id(), 1]
423 438