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) |
