From 7544b11c86fd597321a507747fbd0fe1491ccbd8 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 22 Oct 2025 21:58:43 -0400 Subject: Implemented latched doors in the client --- apworld/client/door.gd | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'apworld/client/door.gd') diff --git a/apworld/client/door.gd b/apworld/client/door.gd index 49f5728..63cfa99 100644 --- a/apworld/client/door.gd +++ b/apworld/client/door.gd @@ -1,7 +1,9 @@ extends "res://scripts/nodes/door.gd" +var door_id var item_id var item_amount +var latched = false func _ready(): @@ -10,7 +12,7 @@ func _ready(): ) var gamedata = global.get_node("Gamedata") - var door_id = gamedata.get_door_for_map_node_path(global.map, node_path) + door_id = gamedata.get_door_for_map_node_path(global.map, node_path) if door_id != null: var ap = global.get_node("Archipelago") var item_lock = ap.get_item_id_for_door(door_id) @@ -27,6 +29,12 @@ func _ready(): self.excludeSenders = [] call_deferred("_readier") + else: + var door_data = gamedata.objects.get_doors()[door_id] + if door_data.has_latch() and door_data.get_latch(): + _check_latched.call_deferred(door_id) + + latched = true if global.map == "the_sun_temple": if name == "spe_EndPlatform" or name == "spe_entry_2": @@ -44,3 +52,24 @@ func _readier(): if ap.client.getItemAmount(item_id) >= item_amount: handleTriggered() + + +func _check_latched(door_id): + var ap = global.get_node("Archipelago") + + if ap.client._latched_doors.has(door_id): + triggered = total + handleTriggered() + + +func handleTriggered(): + super.handleTriggered() + + if latched and ran: + var ap = global.get_node("Archipelago") + ap.client.latchDoor(door_id) + + +func handleUntriggered(): + if not latched or not ran: + super.handleUntriggered() -- cgit 1.4.1