summary refs log tree commit diff stats
path: root/client
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-02 14:50:55 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-02 14:50:55 -0400
commitc5edb28bd91936ede3c7d31a9d934ef5428fba40 (patch)
tree0e5101843558e01d5dff584f863c55fb2cd38b6a /client
parent7f82beb120e222ace6c258fc3982b5988f9ae070 (diff)
downloadlingo2-archipelago-c5edb28bd91936ede3c7d31a9d934ef5428fba40.tar.gz
lingo2-archipelago-c5edb28bd91936ede3c7d31a9d934ef5428fba40.tar.bz2
lingo2-archipelago-c5edb28bd91936ede3c7d31a9d934ef5428fba40.zip
[Client] Handle keyholder sanity
Diffstat (limited to 'client')
-rw-r--r--client/Archipelago/manager.gd6
-rw-r--r--client/Archipelago/player.gd24
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
20var _held_locations = [] 20var _held_locations = []
21var _item_locks = {} 21var _item_locks = {}
22 22
23var victory_condition = -1 23var keyholder_sanity = false
24var shuffle_doors = false 24var shuffle_doors = false
25var victory_condition = -1
25 26
26signal could_not_connect 27signal could_not_connect
27signal connect_status 28signal 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)