From 4f3c8a6927625fd93286af6436a8bb56727ff940 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 1 Nov 2025 18:05:19 -0400 Subject: Move direction panels when castle roof access --- apworld/client/player.gd | 98 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 32 deletions(-) (limited to 'apworld/client/player.gd') diff --git a/apworld/client/player.gd b/apworld/client/player.gd index 35fd793..65bf54e 100644 --- a/apworld/client/player.gd +++ b/apworld/client/player.gd @@ -98,38 +98,72 @@ func _ready(): old_door.queue_free() get_node("/root/scene/Components/Doors").add_child.call_deferred(new_door) - # Block off roof access in Daedalus. - if global.map == "daedalus" and not ap.daedalus_roof_access: - _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) - _set_up_invis_wall(51.5, 11, -17, 16, 10, 1) - _set_up_invis_wall(46, 10, -9.5, 1, 10, 10) - _set_up_invis_wall(67.5, 11, 17, 16, 10, 1) - _set_up_invis_wall(50.5, 11, 14, 10, 10, 1) - _set_up_invis_wall(39, 10, 18.5, 1, 10, 22) - _set_up_invis_wall(20, 15, 18.5, 1, 10, 16) - _set_up_invis_wall(11.5, 15, 3, 32, 10, 1) - _set_up_invis_wall(11.5, 16, -20, 14, 20, 1) - _set_up_invis_wall(14, 16, -26.5, 1, 20, 4) - _set_up_invis_wall(28.5, 20.5, -26.5, 1, 15, 25) - _set_up_invis_wall(40.5, 20.5, -11, 30, 15, 1) - _set_up_invis_wall(50.5, 15, 5.5, 7, 10, 1) - _set_up_invis_wall(83.5, 33.5, 5.5, 1, 7, 11) - _set_up_invis_wall(83.5, 33.5, -5.5, 1, 7, 11) - - var warp_exit_prefab = preload("res://objects/nodes/exit.tscn") - var warp_exit = warp_exit_prefab.instantiate() - warp_exit.name = "roof_access_blocker_warp_exit" - warp_exit.position = Vector3(58, 10, 0) - warp_exit.rotation_degrees.y = 90 - get_parent().add_child.call_deferred(warp_exit) - - var warp_enter_prefab = preload("res://objects/nodes/teleportAuto.tscn") - var warp_enter = warp_enter_prefab.instantiate() - warp_enter.target = warp_exit - warp_enter.position = Vector3(76.5, 30, 1) - warp_enter.scale = Vector3(4, 1.5, 1) - warp_enter.rotation_degrees.y = 90 - get_parent().add_child.call_deferred(warp_enter) + if global.map == "daedalus": + # Teleport the direction panels when the stairs are there. + var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn") + + var dir1 = get_node("/root/scene/Panels/Castle Entrance/castle_direction_1") + var dir1_tpl = tpl_prefab.instantiate() + dir1_tpl.target_path = dir1 + dir1_tpl.teleport_point = Vector3(59.5, 8, -6.5) + dir1_tpl.teleport_rotate = Vector3(-45, 0, 0) + dir1_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_south")) + dir1_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_north")) + dir1_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_west")) + dir1.add_child.call_deferred(dir1_tpl) + + var dir2 = get_node("/root/scene/Panels/Castle Entrance/castle_direction_2") + var dir2_tpl = tpl_prefab.instantiate() + dir2_tpl.target_path = dir2 + dir2_tpl.teleport_point = Vector3(59.5, 8, 6.5) + dir2_tpl.teleport_rotate = Vector3(-45, -180, 0) + dir2_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_south")) + dir2_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_north")) + dir2_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_west")) + dir2.add_child.call_deferred(dir2_tpl) + + var dir3 = get_node("/root/scene/Panels/Castle Entrance/castle_direction_3") + var dir3_tpl = tpl_prefab.instantiate() + dir3_tpl.target_path = dir3 + dir3_tpl.teleport_point = Vector3(54, 8, 0) + dir3_tpl.teleport_rotate = Vector3(-45, 90, 0) + dir3_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_south")) + dir3_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_north")) + dir3_tpl.senders.append(NodePath("/root/scene/Panels/Castle Entrance/castle_west")) + dir3.add_child.call_deferred(dir3_tpl) + + # Block off roof access in Daedalus. + if not ap.daedalus_roof_access: + _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) + _set_up_invis_wall(51.5, 11, -17, 16, 10, 1) + _set_up_invis_wall(46, 10, -9.5, 1, 10, 10) + _set_up_invis_wall(67.5, 11, 17, 16, 10, 1) + _set_up_invis_wall(50.5, 11, 14, 10, 10, 1) + _set_up_invis_wall(39, 10, 18.5, 1, 10, 22) + _set_up_invis_wall(20, 15, 18.5, 1, 10, 16) + _set_up_invis_wall(11.5, 15, 3, 32, 10, 1) + _set_up_invis_wall(11.5, 16, -20, 14, 20, 1) + _set_up_invis_wall(14, 16, -26.5, 1, 20, 4) + _set_up_invis_wall(28.5, 20.5, -26.5, 1, 15, 25) + _set_up_invis_wall(40.5, 20.5, -11, 30, 15, 1) + _set_up_invis_wall(50.5, 15, 5.5, 7, 10, 1) + _set_up_invis_wall(83.5, 33.5, 5.5, 1, 7, 11) + _set_up_invis_wall(83.5, 33.5, -5.5, 1, 7, 11) + + var warp_exit_prefab = preload("res://objects/nodes/exit.tscn") + var warp_exit = warp_exit_prefab.instantiate() + warp_exit.name = "roof_access_blocker_warp_exit" + warp_exit.position = Vector3(58, 10, 0) + warp_exit.rotation_degrees.y = 90 + get_parent().add_child.call_deferred(warp_exit) + + var warp_enter_prefab = preload("res://objects/nodes/teleportAuto.tscn") + var warp_enter = warp_enter_prefab.instantiate() + warp_enter.target = warp_exit + warp_enter.position = Vector3(76.5, 30, 1) + warp_enter.scale = Vector3(4, 1.5, 1) + warp_enter.rotation_degrees.y = 90 + get_parent().add_child.call_deferred(warp_enter) if global.map == "the_entry": # Remove door behind X1. -- cgit 1.4.1