extends "res://scripts/load.gd" func _load(): global._print("Hooked Load Start") var randomizer = global.get_node("Randomizer") var panels_parent = $Panels # Hide the countdown true panels. for child in $CountdownPanels.get_children(): if child.is_class("Spatial"): child.get_node(child.replace_with).translation.y -= 100.0 # Create "The Wanderer". set_gridmap_tile(-4.5, 6.5, 56.5, "MeshInstance4") set_gridmap_tile(-3.5, 6.5, 56.5, "MeshInstance18") set_gridmap_tile(-3.5, 6.5, 57.5, "MeshInstance5") var door_scene = load("res://nodes/door.tscn") var door_script = load("res://scripts/doorControl.gd") var wanderer_entrance = door_scene.instance() wanderer_entrance.name = "Door_wanderer_entrance" wanderer_entrance.translation = Vector3(7.5, 5, 53) wanderer_entrance.rotation = Vector3(0, -PI / 2, 0) wanderer_entrance.scale = Vector3(1, 1.5, 1) wanderer_entrance.set_script(door_script) wanderer_entrance.panels.append("../../../Panels/Tower Room/Panel_wanderlust_1234567890") get_node("Doors/Tower Room Area Doors").add_child(wanderer_entrance) var wanderer_achieve = get_node("Panels/Tower Room/Panel_1234567890_wanderlust") wanderer_achieve.get_parent().remove_child(wanderer_achieve) get_node("Panels/Countdown Panels").add_child(wanderer_achieve) var countdown_scene = load("res://nodes/panel_countdown.tscn") var wanderer_cdp = countdown_scene.instance() wanderer_cdp.name = "CountdownPanel_wanderer" wanderer_cdp.panels = [ "../../Panels/Tower Room/Panel_wanderlust_1234567890", "../../Panels/Orange Room/Panel_lust", "../../Panels/Orange Room/Panel_read", "../../Panels/Orange Room/Panel_sew", "../../Panels/Orange Room/Panel_dead", "../../Panels/Orange Room/Panel_learn", "../../Panels/Orange Room/Panel_dust", "../../Panels/Orange Room/Panel_star", "../../Panels/Orange Room/Panel_wander" ] wanderer_cdp.translation = wanderer_achieve.translation wanderer_cdp.rotation = wanderer_achieve.rotation get_node("CountdownPanels").add_child(wanderer_cdp) wanderer_achieve.translation = Vector3(-51, -33, 35) # way under the map # Apply the randomized panels. randomizer.generator.apply(self) # Write static panels. set_static_panel("Entry Room/Panel_hi_hi", "hi") if randomizer.generator.is_set_seed: set_static_panel("Entry Room/Panel_write_write", "set seed") else: set_static_panel("Entry Room/Panel_write_write", "random seed") set_static_panel("Entry Room/Panel_same_same", str(randomizer.generator.gen_seed)) set_static_panel("Entry Room/Panel_type_type", "version") set_static_panel("Entry Room/Panel_this_this", randomizer.my_version) set_static_panel("Entry Room/Panel_hi_high", "goode", "good") set_static_panel("Entry Room/Panel_low_low", "serendipity", "luck") set_static_panel("Shuffle Room/Panel_secret_secret", "trans rights", "human rights") set_static_panel("Color Arrow Room/Panel_me", "me", "hatkirby") # HOT CRUSTS should be at eye-level, have a yellow block behind it, and # not vanish when solved. var hotcrusts = panels_parent.get_node("Shuffle Room/Panel_shortcuts") hotcrusts.translation.y = 1.5 hotcrusts.get_node("Viewport/GUI/Panel/TextEdit").disconnect( "answer_correct", hotcrusts, "handle_correct" ) set_gridmap_tile(-20.5, 1.5, -79.5, "MeshInstance9") # TRANS RIGHTS should be bottom white, like it used to be. var trans_rights = panels_parent.get_node("Shuffle Room/Panel_secret_secret") trans_rights.translation.y = 0.5 # Move LOW/LOW back to where it used to be. var panel_low = panels_parent.get_node("Entry Room/Panel_low_low") var sign_low = $Decorations/PanelSign/sign21 panel_low.translation = sign_low.translation panel_low.rotation = sign_low.rotation sign_low.queue_free() # Require LOW/LOW for opening the second door. get_node("Doors/Entry Room Area Doors/Door_hi_high").panels.append( "../../../Panels/Entry Room/Panel_low_low" ) get_node("Doors/Entry Room Area Doors/Door_hi_high")._ready() # Finish up with The Wanderer. wanderer_achieve.achieved_text = "the wanderer" wanderer_cdp.replace_with = "../../Panels/Countdown Panels/Panel_1234567890_wanderlust" get_node("Doors/Tower Room Area Doors/Door_wanderlust_start").panels = [ "../../../Panels/Countdown Panels/Panel_1234567890_wanderlust" ] # Make stack/double puzzles into proxies. var proxyscript = load("res://scripts/panelProxy.gd") var extradata_proxies = randomizer.get_node("Extradata").proxies for truepanel in extradata_proxies: var proxies = extradata_proxies[truepanel] for proxypanel in proxies: var proxynode = panels_parent.get_node(proxypanel) var oldparent = proxynode.get_parent() oldparent.remove_child(proxynode) var oldtext = proxynode.text var oldanswer = proxynode.answer proxynode.set_script(proxyscript) proxynode.text = oldtext proxynode.answer = oldanswer proxynode.proxied_panels = ["../../%s" % truepanel] proxynode.exact_proxy = true proxynode.request_ready() oldparent.add_child(proxynode) # Transform the Pilgrim Room. transform_panel("Lingo Room/Panel_lingo_1", 3, 2, 25.001, 0, 0, 0, 2, 2, 1) transform_panel("Lingo Room/Panel_lingo_8", 6.999, 1, 27, 0, -90, 0, 2, 2, 1) transform_panel("Lingo Room/Panel_lingo_3", 10, 1, 75.999, 0, 180, 0, 2, 2, 1) transform_panel("Lingo Room/Panel_lingo_2", -11, 1, 68.999, 0, 180, 0, 2, 2, 1) transform_panel("Lingo Room/Panel_lingo_5", -24.999, 1, 63, 0, 90, 0, 2, 2, 1) transform_panel("Lingo Room/Panel_lingo_11", -25.999, 2, 45, 0, 90, 0, 2, 2, 1) clear_gridmap_tile(2.5, 2.5, 23.5) set_gridmap_tile(2.5, 1.5, 23.5, "MeshInstance18") set_gridmap_tile(3.5, 1.5, 23.5, "MeshInstance18") set_gridmap_tile(2.5, 2.5, 24.5, "MeshInstance8") set_gridmap_tile(2.5, 1.5, 24.5, "MeshInstance8") set_gridmap_tile(3.5, 2.5, 24.5, "MeshInstance8") set_gridmap_tile(3.5, 1.5, 24.5, "MeshInstance8") set_gridmap_tile(8.5, 1.5, 27.5, "MeshInstance18") set_gridmap_tile(8.5, 0.5, 26.5, "MeshInstance18") set_gridmap_tile(7.5, 1.5, 27.5, "MeshInstance6") set_gridmap_tile(7.5, 1.5, 26.5, "MeshInstance6") set_gridmap_tile(7.5, 0.5, 27.5, "MeshInstance6") set_gridmap_tile(7.5, 0.5, 26.5, "MeshInstance6") set_gridmap_tile(9.5, 0.5, 76.5, "MeshInstance5") set_gridmap_tile(9.5, 1.5, 76.5, "MeshInstance5") set_gridmap_tile(10.5, 1.5, 76.5, "MeshInstance5") set_gridmap_tile(10.5, 1.5, 77.5, "MeshInstance18") set_gridmap_tile(9.5, 1.5, 77.5, "MeshInstance18") set_gridmap_tile(-10.5, 0.5, 69.5, "MeshInstance4") set_gridmap_tile(-10.5, 1.5, 69.5, "MeshInstance4") set_gridmap_tile(-11.5, 0.5, 69.5, "MeshInstance9") set_gridmap_tile(-11.5, 1.5, 69.5, "MeshInstance9") set_gridmap_tile(-10.5, 0.5, 70.5, "MeshInstance18") set_gridmap_tile(-11.5, 0.5, 70.5, "MeshInstance18") clear_gridmap_tile(-26.5, 1.5, 64.5) set_gridmap_tile(-26.5, 1.5, 63.5, "MeshInstance18") clear_gridmap_tile(-26.5, 1.5, 62.5) clear_gridmap_tile(-26.5, 1.5, 61.5) set_gridmap_tile(-26.5, 0.5, 62.5, "MeshInstance18") set_gridmap_tile(-25.5, 1.5, 63.5, "MeshInstance6") set_gridmap_tile(-25.5, 0.5, 63.5, "MeshInstance6") set_gridmap_tile(-25.5, 1.5, 62.5, "MeshInstance4") set_gridmap_tile(-25.5, 0.5, 62.5, "MeshInstance4") set_gridmap_tile(-26.5, 1.5, 45.5, "MeshInstance9") set_gridmap_tile(-26.5, 2.5, 45.5, "MeshInstance9") set_gridmap_tile(-26.5, 2.5, 44.5, "MeshInstance9") set_gridmap_tile(-27.5, 1.5, 45.5, "MeshInstance18") set_gridmap_tile(-27.5, 2.5, 44.5, "MeshInstance18") var cdp_template = load("res://nodes/panel_countdown.tscn") var pilgrim_cdp = cdp_template.instance() var pilgrim_real = panels_parent.get_node("Lingo Room/Panel_lingo_9") pilgrim_real.text = "you" pilgrim_real.answer = "the pilgrim" pilgrim_real.achieved_text = "the pilgrim" pilgrim_cdp.translation = pilgrim_real.translation pilgrim_cdp.rotation = pilgrim_real.rotation pilgrim_cdp.scale = pilgrim_real.scale pilgrim_cdp.replace_with = "../../Panels/Countdown Panels/Panel_lingo_9" pilgrim_cdp.panels = [ "../../Panels/Lingo Room/Panel_lingo_1", "../../Panels/Lingo Room/Panel_lingo_2", "../../Panels/Lingo Room/Panel_lingo_3", "../../Panels/Lingo Room/Panel_lingo_4", "../../Panels/Lingo Room/Panel_lingo_5", "../../Panels/Lingo Room/Panel_lingo_6", "../../Panels/Lingo Room/Panel_lingo_7", "../../Panels/Lingo Room/Panel_lingo_8", "../../Panels/Lingo Room/Panel_lingo_10", "../../Panels/Lingo Room/Panel_lingo_11", "../../Panels/Lingo Room/Panel_lingo_12", "../../Panels/Lingo Room/Panel_lingo_13" ] pilgrim_real.get_parent().remove_child(pilgrim_real) panels_parent.get_node("Countdown Panels").add_child(pilgrim_real) pilgrim_cdp.set_name("CountdownPanel_pilgrim") $CountdownPanels.add_child(pilgrim_cdp) pilgrim_real.translation.y = -33 # Remap The Steady's doors. for door in randomizer.steady._door_mapping.keys(): get_node("Doors/Rock Room Doors").get_node(door).remap(["../../../Panels/Rock Room/%s" % randomizer.steady._door_mapping[door]]) for door in get_node("Doors/Rock Room Doors").get_children(): if !randomizer.steady._door_mapping.has(door.name) and door.name != "Door_hint": door.remap(["../../../Panels/Countdown Panels/Panel_steady_steady"]) # Sunwarps 1 and 6 are rotated differently from the rest, so we have to fix that. get_node("Decorations/Teleporter Windows/localmap").rotation_degrees.y = 0 get_node("Decorations/Teleporter Windows/localmap2").rotation_degrees.y = 0 get_node("Decorations/Teleporter Windows/localmap11").rotation_degrees.y = 0 get_node("Decorations/Teleporter Windows/localmap12").rotation_degrees.y = 0 get_node("Decorations/Teleporter Windows/localmap13").rotation_degrees.y = -90 get_node("Warps/Teleporter Warps/Sunwarp_enter_1").translation.x = 19.5 get_node("Warps/Teleporter Warps/Sunwarp_exit_1").translation.x = -15.5 get_node("Warps/Teleporter Warps/Sunwarp_enter_6").translation.x = 4.5 get_node("Warps/Teleporter Warps/Sunwarp_exit_6").translation.x = -37.5 get_node("Warps/Teleporter Warps/Sunwarp_exit_7").translation.z = 23.5 # Randomize the sunwarps. var sw_orig_translations = [] var sw_rotations = [0, 0, 90, 180, 0, 0, 0, 90, 270, 270, 0, 0] var sw_text_translations = [] var sw_text_rotations = [] for i in range (1,7): sw_orig_translations.append(get_node("Warps/Teleporter Warps/Sunwarp_enter_%d" % i).translation) sw_text_translations.append(get_node("Decorations/Signs/Sunwarp Numbers/enter_%d" % i).translation) sw_text_rotations.append(get_node("Decorations/Signs/Sunwarp Numbers/enter_%d" % i).rotation_degrees) for i in range (1,7): sw_orig_translations.append(get_node("Warps/Teleporter Warps/Sunwarp_exit_%d" % i).translation) sw_text_translations.append(get_node("Decorations/Signs/Sunwarp Numbers/exit_%d" % i).translation) sw_text_rotations.append(get_node("Decorations/Signs/Sunwarp Numbers/exit_%d" % i).rotation_degrees) for i in range (1,7): get_node("Warps/Teleporter Warps/Sunwarp_enter_%d" % i).translation = sw_orig_translations[randomizer.sunwarps[i-1]-1] get_node("Warps/Teleporter Warps/Sunwarp_exit_%d" % i).translation = sw_orig_translations[randomizer.sunwarps[i+5]-1] get_node("Decorations/Signs/Sunwarp Numbers/enter_%d" % i).translation = sw_text_translations[randomizer.sunwarps[i-1]-1] get_node("Decorations/Signs/Sunwarp Numbers/enter_%d" % i).rotation_degrees = sw_text_rotations[randomizer.sunwarps[i-1]-1] get_node("Decorations/Signs/Sunwarp Numbers/exit_%d" % i).translation = sw_text_translations[randomizer.sunwarps[i+5]-1] get_node("Decorations/Signs/Sunwarp Numbers/exit_%d" % i).rotation_degrees = sw_text_rotations[randomizer.sunwarps[i+5]-1] var final_rot = sw_rotations[randomizer.sunwarps[i-1]-1] - sw_rotations[randomizer.sunwarps[i+5]-1] if final_rot < 0: final_rot += 360 get_node("Warps/Teleporter Warps/Sunwarp_enter_%d" % i).rotate = str(final_rot) # Proceed with the rest of the load. global._print("Hooked Load End") ._load() func set_static_panel(name, question, answer = ""): if answer == "": answer = question var node = self.get_node("Panels").get_node(name) node.text = question node.answer = answer func set_gridmap_tile(x, y, z, tile): var gridmap = self.get_node("GridMap") var mesh_library = gridmap.mesh_library var mapvec = gridmap.world_to_map(gridmap.to_local(Vector3(x, y, z))) gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, mesh_library.find_item_by_name(tile)) func clear_gridmap_tile(x, y, z): var gridmap = self.get_node("GridMap") var mesh_library = gridmap.mesh_library var mapvec = gridmap.world_to_map(gridmap.to_local(Vector3(x, y, z))) gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, GridMap.INVALID_CELL_ITEM) func transform_panel(path, tx, ty, tz, rx, ry, rz, sx, sy, sz): var panel_node = self.get_node("Panels").get_node(path) panel_node.translation.x = tx panel_node.translation.y = ty panel_node.translation.z = tz panel_node.rotation_degrees.x = rx panel_node.rotation_degrees.y = ry panel_node.rotation_degrees.z = rz panel_node.scale.x = sx panel_node.scale.y = sy panel_node.scale.z = sz