about summary refs log tree commit diff stats
path: root/apworld/client/manager.gd
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/client/manager.gd')
-rw-r--r--apworld/client/manager.gd31
1 files changed, 31 insertions, 0 deletions
diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index 1e0b549..f10a0b7 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd
@@ -46,6 +46,10 @@ const kCYAN_DOOR_BEHAVIOR_H2 = 0
46const kCYAN_DOOR_BEHAVIOR_DOUBLE_LETTER = 1 46const kCYAN_DOOR_BEHAVIOR_DOUBLE_LETTER = 1
47const kCYAN_DOOR_BEHAVIOR_ITEM = 2 47const kCYAN_DOOR_BEHAVIOR_ITEM = 2
48 48
49const kFAST_TRAVEL_ACCESS_VANILLA = 0
50const kFAST_TRAVEL_ACCESS_UNLOCKED = 1
51const kFAST_TRAVEL_ACCESS_ITEMS = 2
52
49const kEndingNameByVictoryValue = { 53const kEndingNameByVictoryValue = {
50 0: "GRAY", 54 0: "GRAY",
51 1: "PURPLE", 55 1: "PURPLE",
@@ -63,21 +67,26 @@ const kEndingNameByVictoryValue = {
63} 67}
64 68
65var apworld_version = [0, 0, 0] 69var apworld_version = [0, 0, 0]
70var custom_mint_ending = ""
66var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2 71var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2
67var daedalus_only = false 72var daedalus_only = false
68var daedalus_roof_access = false 73var daedalus_roof_access = false
69var enable_gift_maps = [] 74var enable_gift_maps = []
70var enable_icarus = false 75var enable_icarus = false
71var endings_requirement = 0 76var endings_requirement = 0
77var fast_travel_access = 0
72var keyholder_sanity = false 78var keyholder_sanity = false
73var masteries_requirement = 0 79var masteries_requirement = 0
80var music_mapping = {}
74var port_pairings = {} 81var port_pairings = {}
82var rte_mapping = []
75var shuffle_control_center_colors = false 83var shuffle_control_center_colors = false
76var shuffle_doors = false 84var shuffle_doors = false
77var shuffle_gallery_paintings = false 85var shuffle_gallery_paintings = false
78var shuffle_letters = kSHUFFLE_LETTERS_VANILLA 86var shuffle_letters = kSHUFFLE_LETTERS_VANILLA
79var shuffle_symbols = false 87var shuffle_symbols = false
80var shuffle_worldports = false 88var shuffle_worldports = false
89var slot_rng = null
81var strict_cyan_ending = false 90var strict_cyan_ending = false
82var strict_purple_ending = false 91var strict_purple_ending = false
83var victory_condition = -1 92var victory_condition = -1
@@ -269,6 +278,13 @@ func _process_item(item, amount):
269 if item_id == gamedata.objects.get_special_ids()["Numbers"] and global.map == "the_fuzzy": 278 if item_id == gamedata.objects.get_special_ids()["Numbers"] and global.map == "the_fuzzy":
270 global.allow_numbers = true 279 global.allow_numbers = true
271 280
281 if gamedata.map_id_by_rte_ap_id.has(item_id):
282 var rteInner = get_tree().get_root().get_node_or_null(
283 "scene/player/pause_menu/menu/return/rteInner"
284 )
285 if rteInner != null:
286 rteInner.refreshButtons()
287
272 # Show a message about the item if it's new. 288 # Show a message about the item if it's new.
273 if int(item["index"]) > _last_new_item: 289 if int(item["index"]) > _last_new_item:
274 _last_new_item = int(item["index"]) 290 _last_new_item = int(item["index"])
@@ -463,12 +479,14 @@ func _client_connected(slot_data):
463 _last_new_item = localdata[0] 479 _last_new_item = localdata[0]
464 480
465 # Read slot data. 481 # Read slot data.
482 custom_mint_ending = slot_data.get("custom_mint_ending", "")
466 cyan_door_behavior = int(slot_data.get("cyan_door_behavior", 0)) 483 cyan_door_behavior = int(slot_data.get("cyan_door_behavior", 0))
467 daedalus_only = bool(slot_data.get("daedalus_only", false)) 484 daedalus_only = bool(slot_data.get("daedalus_only", false))
468 daedalus_roof_access = bool(slot_data.get("daedalus_roof_access", false)) 485 daedalus_roof_access = bool(slot_data.get("daedalus_roof_access", false))
469 enable_gift_maps = slot_data.get("enable_gift_maps", []) 486 enable_gift_maps = slot_data.get("enable_gift_maps", [])
470 enable_icarus = bool(slot_data.get("enable_icarus", false)) 487 enable_icarus = bool(slot_data.get("enable_icarus", false))
471 endings_requirement = int(slot_data.get("endings_requirement", 0)) 488 endings_requirement = int(slot_data.get("endings_requirement", 0))
489 fast_travel_access = int(slot_data.get("fast_travel_access", 0))
472 keyholder_sanity = bool(slot_data.get("keyholder_sanity", false)) 490 keyholder_sanity = bool(slot_data.get("keyholder_sanity", false))
473 masteries_requirement = int(slot_data.get("masteries_requirement", 0)) 491 masteries_requirement = int(slot_data.get("masteries_requirement", 0))
474 shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false)) 492 shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false))
@@ -496,6 +514,19 @@ func _client_connected(slot_data):
496 raw_pp[p1] 514 raw_pp[p1]
497 )] 515 )]
498 516
517 rte_mapping.clear()
518 if slot_data.has("rte"):
519 rte_mapping = slot_data.get("rte")
520
521 slot_rng = RandomNumberGenerator.new()
522 slot_rng.seed = int(slot_data.get("seed", 0))
523
524 music_mapping.clear()
525 if bool(slot_data.get("shuffle_music", false)):
526 for map_name in global.reserved_scenes:
527 var track_index = slot_rng.randi_range(0, musicPlayer.all_tracks.size() - 1)
528 music_mapping[map_name] = musicPlayer.all_tracks.keys()[track_index]
529
499 # Set up item locks. 530 # Set up item locks.
500 _item_locks = {} 531 _item_locks = {}
501 532