From 9e023e65e171a40fc72b34700260e3b8e6a80228 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 31 Aug 2025 18:37:01 -0400 Subject: [Client] Keyholders in locations --- client/Archipelago/player.gd | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'client/Archipelago/player.gd') diff --git a/client/Archipelago/player.gd b/client/Archipelago/player.gd index 46b5940..37cabc6 100644 --- a/client/Archipelago/player.gd +++ b/client/Archipelago/player.gd @@ -2,9 +2,12 @@ extends "res://scripts/nodes/player.gd" func _ready(): + var khl_script = load("res://scripts/nodes/keyHolderListener.gd") + var ap = global.get_node("Archipelago") var gamedata = global.get_node("Gamedata") + # Set up door locations. var map_id = gamedata.map_id_by_name.get(global.map) for door in gamedata.objects.get_doors(): if door.get_map_id() != map_id: @@ -32,8 +35,22 @@ func _ready(): locationListener.senders.append(NodePath("/root/scene/" + panel_path)) + for keyholder_ref in door.get_keyholders(): + var keyholder_data = gamedata.objects.get_keyholders()[keyholder_ref.get_keyholder()] + + var khl = khl_script.new() + khl.name = ( + "location_%d_keyholder_%d" % [door.get_ap_id(), keyholder_ref.get_keyholder()] + ) + khl.answer = keyholder_ref.get_key() + khl.senders.append(NodePath("/root/scene/" + keyholder_data.get_path())) + get_parent().add_child.call_deferred(khl) + + locationListener.senders.append(NodePath("../" + khl.name)) + get_parent().add_child.call_deferred(locationListener) + # Set up letter locations. for letter in gamedata.objects.get_letters(): var room = gamedata.objects.get_rooms()[letter.get_room_id()] if room.get_map_id() != map_id: @@ -46,6 +63,7 @@ func _ready(): get_parent().add_child.call_deferred(locationListener) + # Set up mastery locations. for mastery in gamedata.objects.get_masteries(): var room = gamedata.objects.get_rooms()[mastery.get_room_id()] if room.get_map_id() != map_id: @@ -58,6 +76,7 @@ func _ready(): get_parent().add_child.call_deferred(locationListener) + # Set up ending locations. for ending in gamedata.objects.get_endings(): var room = gamedata.objects.get_rooms()[ending.get_room_id()] if room.get_map_id() != map_id: -- cgit 1.4.1