From 8c3428b900e1696c3c3edcc5fb513988ddbe8c41 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 20 Aug 2025 16:13:24 -0400 Subject: Committed map dump script --- scripts/randoExport.gd | 171 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 scripts/randoExport.gd diff --git a/scripts/randoExport.gd b/scripts/randoExport.gd new file mode 100644 index 0000000..c94e9a4 --- /dev/null +++ b/scripts/randoExport.gd @@ -0,0 +1,171 @@ +@tool +extends Node + +@export_category("Debug") +@export var mybutton: bool: + set(value): + _my_button_pressed() + + +func _my_button_pressed(): + var results = [] + + _visit_node(get_parent(), results) + + var file = FileAccess.open("user://rando_dump.txt", FileAccess.WRITE) + file.store_string("".join(results)) + + +func _visit_node(node, results: Array): + var root_node = get_parent() + var node_id = String(root_node.get_path_to(node).get_concatenated_names()) + + if node is PanelMain: + var clue = node.clue + var answer = node.answer + + if node.missing_line == "clue": + clue = node.answer + answer = node.clue + elif node.missing_line == "symbol": + answer = node.symbol + + results.append("panels {\n name: \"") + results.append(clue.to_upper()) + results.append("\"\n path: \"") + results.append(node_id) + results.append("\"\n clue: \"") + results.append(clue) + results.append("\"\n answer: \"") + results.append(answer) + results.append("\"\n") + + if node.missing_line != "symbol": + var symbols = _parse_symbol(node.symbol) + for symbol in symbols: + results.append(" symbols: \"") + results.append(symbol) + results.append("\"\n") + + for proxy in node.proxies: + var proxy_node = node.get_node(proxy) + var proxy_path = String(root_node.get_path_to(proxy_node).get_concatenated_names()) + results.append(" proxies { answer: \"") + + if proxy_node.missing_line == "clue": + results.append(proxy_node.clue) + elif proxy_node.missing_line == "symbol": + results.append(proxy_node.symbol) + else: + results.append(proxy_node.answer) + + results.append("\" path: \"") + results.append(proxy_path) + results.append("\" }\n") + + results.append("}\n") + elif node is DoorMain: + var door_data = {"door_id": node_id} + + if !node.senders.is_empty(): + door_data["senders"] = _parse_node_paths(root_node, node, node.senders) + + if !node.senderGroup.is_empty(): + door_data["senderGroup"] = _parse_node_paths(root_node, node, node.senderGroup) + + #results["doors"][node_id] = door_data + elif node is Collectable: + if node.unlock_type == "key": + results.append("letters {\n key: \"") + results.append(node.unlock_key) + results.append("\"\n") + + if node.level == 2: + results.append(" level2: true\n") + + results.append(" path: \"") + results.append(node_id) + results.append("\"\n}\n") + elif node.unlock_type == "smiley": + results.append("masteries {\n name: \"MASTERY\"\n path: \"") + results.append(node_id) + results.append("\"\n}\n") + + elif node is Painting or node is AutoPainting: + results.append("paintings {\n name: \"") + results.append(node.name.to_upper()) + results.append("\"\n path: \"") + results.append(node_id) + results.append("\"\n}\n") + + elif node is Worldport: + results.append("ports {\n name: \"") + results.append(node.name.to_upper()) + results.append("\"\n path: \"") + results.append(node_id) + results.append("\"\n}\n") + + elif node is Keyholder: + results.append("keyholders {\n name: \"") + results.append(node.name.to_upper()) + results.append("\"\n path: \"") + results.append(node_id) + results.append("\"\n}\n") + + for child in node.get_children(): + _visit_node(child, results) + + +func _parse_symbol(symbol): + var raw = symbol.strip_edges() + var result = [] + + if raw.contains(":Syn") or raw.contains(":Ant"): + result.append("sun") + if raw.contains(":Add") or raw.contains(":Rem") or raw.contains(":Adp"): + result.append("sparkles") + if raw.contains(":Hom") or raw.contains(":Rhy"): + result.append("zero") + if raw.contains(":Cat") or raw.contains(":Exa"): + result.append("example") + if raw.contains(":Par") or raw.contains(":Who"): + result.append("boxes") + if raw.contains(":Plu") or raw.contains(":Sin"): + result.append("planet") + if raw.contains(":Int") or raw.contains(":Dim"): + result.append("pyramid") + if raw.contains(":Ene") or raw.contains(":Enr") or raw.contains(":Ent"): + result.append("cross") + if raw.contains(":Swe") or raw.contains(":Swu"): + result.append("sweet") + if raw.contains(":Mas") or raw.contains(":Fem"): + result.append("gender") + if raw.contains(":Old") or raw.contains(":You") or raw.contains(":Ten"): + result.append("age") + if raw.contains(":Sou") or raw.contains(":Sor"): + result.append("sound") + if raw.contains(":Ana"): + result.append("anagram") + if raw.contains(":Job") or raw.contains(":Emp"): + result.append("job") + if raw.contains(":Sur") or raw.contains(":Srr"): + result.append("stars") + if raw.contains(":Cha"): + result.append("null") + if raw.contains(":Eva"): + result.append("eval") + if raw.contains(":Sad") or raw.contains(":Odd") or raw.contains("@"): + result.append("lingo") + if raw.contains("?"): + result.append("question") + + return result + + +func _parse_node_paths(node, parent, array): + var result = [] + + for p in array: + result.append(String(node.get_path_to(parent.get_node(p)).get_concatenated_names())) + + return result -- cgit 1.4.1