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