about summary refs log tree commit diff stats
path: root/apworld/client/unlockReaderListener.gd
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-11-02 11:23:20 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2025-11-02 11:23:20 -0500
commitc71e8cb61a9cd69a5d478d47c361f3887609773a (patch)
tree6c5f9fa2d9c97323f2b5f44c286c54ba8a2c1a7a /apworld/client/unlockReaderListener.gd
parentf38e9c71414cc5a1fd155a73c847f7f01377f105 (diff)
downloadlingo2-archipelago-c71e8cb61a9cd69a5d478d47c361f3887609773a.tar.gz
lingo2-archipelago-c71e8cb61a9cd69a5d478d47c361f3887609773a.tar.bz2
lingo2-archipelago-c71e8cb61a9cd69a5d478d47c361f3887609773a.zip
Make unlockReaderListener shuffleable
Diffstat (limited to 'apworld/client/unlockReaderListener.gd')
-rw-r--r--apworld/client/unlockReaderListener.gd46
1 files changed, 46 insertions, 0 deletions
diff --git a/apworld/client/unlockReaderListener.gd b/apworld/client/unlockReaderListener.gd new file mode 100644 index 0000000..a5754b9 --- /dev/null +++ b/apworld/client/unlockReaderListener.gd
@@ -0,0 +1,46 @@
1extends "res://scripts/nodes/listeners/unlockReaderListener.gd"
2
3var item_id = null
4var item_amount
5
6
7func _ready():
8 var node_path = String(
9 get_tree().get_root().get_node("scene").get_path_to(self).get_concatenated_names()
10 )
11
12 var gamedata = global.get_node("Gamedata")
13 var door_id = gamedata.get_door_for_map_node_path(global.map, node_path)
14 if door_id != null:
15 var ap = global.get_node("Archipelago")
16 var item_lock = ap.get_item_id_for_door(door_id)
17
18 if item_lock != null:
19 item_id = item_lock[0]
20 item_amount = item_lock[1]
21
22 self.senders = []
23 self.senderGroup = []
24 self.nested = false
25 self.complete_at = 0
26 self.max_length = 0
27 self.excludeSenders = []
28
29 super._ready()
30
31
32func _readier():
33 if item_id != null:
34 var ap = global.get_node("Archipelago")
35
36 if ap.client.getItemAmount(item_id) >= item_amount:
37 handleTriggered()
38 else:
39 super._readier()
40
41
42func handleTriggered():
43 if item_id != null:
44 emit_signal("trigger")
45 else:
46 super.handleTriggered()