From c5edb28bd91936ede3c7d31a9d934ef5428fba40 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Tue, 2 Sep 2025 14:50:55 -0400 Subject: [Client] Handle keyholder sanity --- client/Archipelago/player.gd | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'client/Archipelago/player.gd') diff --git a/client/Archipelago/player.gd b/client/Archipelago/player.gd index 7a1f5db..93eb14f 100644 --- a/client/Archipelago/player.gd +++ b/client/Archipelago/player.gd @@ -114,6 +114,30 @@ func _ready(): get_parent().add_child.call_deferred(victoryListener) + # Set up keyholder locations, in keyholder sanity. + if ap.keyholder_sanity: + for keyholder in gamedata.objects.get_keyholders(): + if not keyholder.has_key(): + continue + + var room = gamedata.objects.get_rooms()[keyholder.get_room_id()] + if room.get_map_id() != map_id: + continue + + var locationListener = ap.SCRIPT_locationListener.new() + locationListener.location_id = keyholder.get_ap_id() + locationListener.name = "locationListener_%d" % keyholder.get_ap_id() + + var khl = khl_script.new() + khl.name = "location_%d_keyholder" % keyholder.get_ap_id() + khl.answer = keyholder.get_key() + khl.senders.append(NodePath("/root/scene/" + keyholder.get_path())) + get_parent().add_child.call_deferred(khl) + + locationListener.senders.append(NodePath("../" + khl.name)) + + get_parent().add_child.call_deferred(locationListener) + # Block off roof access in Daedalus. if global.map == "daedalus": _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) -- cgit 1.4.1