diff options
Diffstat (limited to 'client/Archipelago/player.gd')
-rw-r--r-- | client/Archipelago/player.gd | 19 |
1 files changed, 19 insertions, 0 deletions
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" | |||
2 | 2 | ||
3 | 3 | ||
4 | func _ready(): | 4 | func _ready(): |
5 | var khl_script = load("res://scripts/nodes/keyHolderListener.gd") | ||
6 | |||
5 | var ap = global.get_node("Archipelago") | 7 | var ap = global.get_node("Archipelago") |
6 | var gamedata = global.get_node("Gamedata") | 8 | var gamedata = global.get_node("Gamedata") |
7 | 9 | ||
10 | # Set up door locations. | ||
8 | var map_id = gamedata.map_id_by_name.get(global.map) | 11 | var map_id = gamedata.map_id_by_name.get(global.map) |
9 | for door in gamedata.objects.get_doors(): | 12 | for door in gamedata.objects.get_doors(): |
10 | if door.get_map_id() != map_id: | 13 | if door.get_map_id() != map_id: |
@@ -32,8 +35,22 @@ func _ready(): | |||
32 | 35 | ||
33 | locationListener.senders.append(NodePath("/root/scene/" + panel_path)) | 36 | locationListener.senders.append(NodePath("/root/scene/" + panel_path)) |
34 | 37 | ||
38 | for keyholder_ref in door.get_keyholders(): | ||
39 | var keyholder_data = gamedata.objects.get_keyholders()[keyholder_ref.get_keyholder()] | ||
40 | |||
41 | var khl = khl_script.new() | ||
42 | khl.name = ( | ||
43 | "location_%d_keyholder_%d" % [door.get_ap_id(), keyholder_ref.get_keyholder()] | ||
44 | ) | ||
45 | khl.answer = keyholder_ref.get_key() | ||
46 | khl.senders.append(NodePath("/root/scene/" + keyholder_data.get_path())) | ||
47 | get_parent().add_child.call_deferred(khl) | ||
48 | |||
49 | locationListener.senders.append(NodePath("../" + khl.name)) | ||
50 | |||
35 | get_parent().add_child.call_deferred(locationListener) | 51 | get_parent().add_child.call_deferred(locationListener) |
36 | 52 | ||
53 | # Set up letter locations. | ||
37 | for letter in gamedata.objects.get_letters(): | 54 | for letter in gamedata.objects.get_letters(): |
38 | var room = gamedata.objects.get_rooms()[letter.get_room_id()] | 55 | var room = gamedata.objects.get_rooms()[letter.get_room_id()] |
39 | if room.get_map_id() != map_id: | 56 | if room.get_map_id() != map_id: |
@@ -46,6 +63,7 @@ func _ready(): | |||
46 | 63 | ||
47 | get_parent().add_child.call_deferred(locationListener) | 64 | get_parent().add_child.call_deferred(locationListener) |
48 | 65 | ||
66 | # Set up mastery locations. | ||
49 | for mastery in gamedata.objects.get_masteries(): | 67 | for mastery in gamedata.objects.get_masteries(): |
50 | var room = gamedata.objects.get_rooms()[mastery.get_room_id()] | 68 | var room = gamedata.objects.get_rooms()[mastery.get_room_id()] |
51 | if room.get_map_id() != map_id: | 69 | if room.get_map_id() != map_id: |
@@ -58,6 +76,7 @@ func _ready(): | |||
58 | 76 | ||
59 | get_parent().add_child.call_deferred(locationListener) | 77 | get_parent().add_child.call_deferred(locationListener) |
60 | 78 | ||
79 | # Set up ending locations. | ||
61 | for ending in gamedata.objects.get_endings(): | 80 | for ending in gamedata.objects.get_endings(): |
62 | var room = gamedata.objects.get_rooms()[ending.get_room_id()] | 81 | var room = gamedata.objects.get_rooms()[ending.get_room_id()] |
63 | if room.get_map_id() != map_id: | 82 | if room.get_map_id() != map_id: |