From b7900ade0309d3b8c13b830746ca1435141ffe26 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 8 Feb 2026 09:28:23 -0500 Subject: Added music shuffle --- apworld/client/manager.gd | 11 +++++++++++ apworld/client/player.gd | 11 +++++++++++ 2 files changed, 22 insertions(+) (limited to 'apworld/client') diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index 00f03ea..e259708 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd @@ -76,6 +76,7 @@ var endings_requirement = 0 var fast_travel_access = 0 var keyholder_sanity = false var masteries_requirement = 0 +var music_mapping = {} var port_pairings = {} var rte_mapping = [] var shuffle_control_center_colors = false @@ -84,6 +85,7 @@ var shuffle_gallery_paintings = false var shuffle_letters = kSHUFFLE_LETTERS_VANILLA var shuffle_symbols = false var shuffle_worldports = false +var slot_rng = null var strict_cyan_ending = false var strict_purple_ending = false var victory_condition = -1 @@ -514,6 +516,15 @@ func _client_connected(slot_data): if slot_data.has("rte"): rte_mapping = slot_data.get("rte") + slot_rng = RandomNumberGenerator.new() + slot_rng.seed = int(slot_data.get("seed", 0)) + + music_mapping.clear() + if bool(slot_data.get("shuffle_music", false)): + for map_name in global.reserved_scenes: + var track_index = slot_rng.randi_range(0, musicPlayer.all_tracks.size() - 1) + music_mapping[map_name] = musicPlayer.all_tracks.keys()[track_index] + # Set up item locks. _item_locks = {} diff --git a/apworld/client/player.gd b/apworld/client/player.gd index 95c05d7..dabc15d 100644 --- a/apworld/client/player.gd +++ b/apworld/client/player.gd @@ -196,6 +196,17 @@ func _ready(): minimap.visible = ap.show_minimap get_parent().add_child.call_deferred(minimap) + if ap.music_mapping.has(global.map): + var song_setter = get_node_or_null("/root/scene/songSetter") + if song_setter: + song_setter.song_name = ap.music_mapping[global.map] + else: + var song_setter_prefab = preload("res://objects/nodes/songSetter.tscn") + song_setter = song_setter_prefab.instantiate() + song_setter.name = "songSetter" + song_setter.song_name = ap.music_mapping[global.map] + get_parent().add_child.call_deferred(song_setter) + super._ready() await get_tree().process_frame -- cgit 1.4.1