diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/Archipelago/manager.gd | 6 | ||||
-rw-r--r-- | client/Archipelago/player.gd | 24 |
2 files changed, 28 insertions, 2 deletions
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index 0186a09..3aa3c50 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd | |||
@@ -20,8 +20,9 @@ var _batch_locations = false | |||
20 | var _held_locations = [] | 20 | var _held_locations = [] |
21 | var _item_locks = {} | 21 | var _item_locks = {} |
22 | 22 | ||
23 | var victory_condition = -1 | 23 | var keyholder_sanity = false |
24 | var shuffle_doors = false | 24 | var shuffle_doors = false |
25 | var victory_condition = -1 | ||
25 | 26 | ||
26 | signal could_not_connect | 27 | signal could_not_connect |
27 | signal connect_status | 28 | signal connect_status |
@@ -288,8 +289,9 @@ func _client_connected(slot_data): | |||
288 | _last_new_item = localdata[0] | 289 | _last_new_item = localdata[0] |
289 | 290 | ||
290 | # Read slot data. | 291 | # Read slot data. |
291 | victory_condition = int(slot_data.get("victory_condition", 0)) | 292 | keyholder_sanity = bool(slot_data.get("keyholder_sanity", false)) |
292 | shuffle_doors = bool(slot_data.get("shuffle_doors", false)) | 293 | shuffle_doors = bool(slot_data.get("shuffle_doors", false)) |
294 | victory_condition = int(slot_data.get("victory_condition", 0)) | ||
293 | 295 | ||
294 | # Set up item locks. | 296 | # Set up item locks. |
295 | _item_locks = {} | 297 | _item_locks = {} |
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(): | |||
114 | 114 | ||
115 | get_parent().add_child.call_deferred(victoryListener) | 115 | get_parent().add_child.call_deferred(victoryListener) |
116 | 116 | ||
117 | # Set up keyholder locations, in keyholder sanity. | ||
118 | if ap.keyholder_sanity: | ||
119 | for keyholder in gamedata.objects.get_keyholders(): | ||
120 | if not keyholder.has_key(): | ||
121 | continue | ||
122 | |||
123 | var room = gamedata.objects.get_rooms()[keyholder.get_room_id()] | ||
124 | if room.get_map_id() != map_id: | ||
125 | continue | ||
126 | |||
127 | var locationListener = ap.SCRIPT_locationListener.new() | ||
128 | locationListener.location_id = keyholder.get_ap_id() | ||
129 | locationListener.name = "locationListener_%d" % keyholder.get_ap_id() | ||
130 | |||
131 | var khl = khl_script.new() | ||
132 | khl.name = "location_%d_keyholder" % keyholder.get_ap_id() | ||
133 | khl.answer = keyholder.get_key() | ||
134 | khl.senders.append(NodePath("/root/scene/" + keyholder.get_path())) | ||
135 | get_parent().add_child.call_deferred(khl) | ||
136 | |||
137 | locationListener.senders.append(NodePath("../" + khl.name)) | ||
138 | |||
139 | get_parent().add_child.call_deferred(locationListener) | ||
140 | |||
117 | # Block off roof access in Daedalus. | 141 | # Block off roof access in Daedalus. |
118 | if global.map == "daedalus": | 142 | if global.map == "daedalus": |
119 | _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) | 143 | _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) |