diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-20 16:13:24 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-20 16:13:24 -0400 |
| commit | 8c3428b900e1696c3c3edcc5fb513988ddbe8c41 (patch) | |
| tree | 58fb8ab7c3dfd55a9c9d86c2d9d2d3a1c565d3e3 /scripts/randoExport.gd | |
| parent | 505a1a948a9bd0a6c4a273913db6fd9f73723c44 (diff) | |
| download | lingo2-archipelago-8c3428b900e1696c3c3edcc5fb513988ddbe8c41.tar.gz lingo2-archipelago-8c3428b900e1696c3c3edcc5fb513988ddbe8c41.tar.bz2 lingo2-archipelago-8c3428b900e1696c3c3edcc5fb513988ddbe8c41.zip | |
Committed map dump script
Diffstat (limited to 'scripts/randoExport.gd')
| -rw-r--r-- | scripts/randoExport.gd | 171 |
1 files changed, 171 insertions, 0 deletions
| 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 @@ | |||
| 1 | @tool | ||
| 2 | extends Node | ||
| 3 | |||
| 4 | @export_category("Debug") | ||
| 5 | @export var mybutton: bool: | ||
| 6 | set(value): | ||
| 7 | _my_button_pressed() | ||
| 8 | |||
| 9 | |||
| 10 | func _my_button_pressed(): | ||
| 11 | var results = [] | ||
| 12 | |||
| 13 | _visit_node(get_parent(), results) | ||
| 14 | |||
| 15 | var file = FileAccess.open("user://rando_dump.txt", FileAccess.WRITE) | ||
| 16 | file.store_string("".join(results)) | ||
| 17 | |||
| 18 | |||
| 19 | func _visit_node(node, results: Array): | ||
| 20 | var root_node = get_parent() | ||
| 21 | var node_id = String(root_node.get_path_to(node).get_concatenated_names()) | ||
| 22 | |||
| 23 | if node is PanelMain: | ||
| 24 | var clue = node.clue | ||
| 25 | var answer = node.answer | ||
| 26 | |||
| 27 | if node.missing_line == "clue": | ||
| 28 | clue = node.answer | ||
| 29 | answer = node.clue | ||
| 30 | elif node.missing_line == "symbol": | ||
| 31 | answer = node.symbol | ||
| 32 | |||
| 33 | results.append("panels {\n name: \"") | ||
| 34 | results.append(clue.to_upper()) | ||
| 35 | results.append("\"\n path: \"") | ||
| 36 | results.append(node_id) | ||
| 37 | results.append("\"\n clue: \"") | ||
| 38 | results.append(clue) | ||
| 39 | results.append("\"\n answer: \"") | ||
| 40 | results.append(answer) | ||
| 41 | results.append("\"\n") | ||
| 42 | |||
| 43 | if node.missing_line != "symbol": | ||
| 44 | var symbols = _parse_symbol(node.symbol) | ||
| 45 | for symbol in symbols: | ||
| 46 | results.append(" symbols: \"") | ||
| 47 | results.append(symbol) | ||
| 48 | results.append("\"\n") | ||
| 49 | |||
| 50 | for proxy in node.proxies: | ||
| 51 | var proxy_node = node.get_node(proxy) | ||
| 52 | var proxy_path = String(root_node.get_path_to(proxy_node).get_concatenated_names()) | ||
| 53 | results.append(" proxies { answer: \"") | ||
| 54 | |||
| 55 | if proxy_node.missing_line == "clue": | ||
| 56 | results.append(proxy_node.clue) | ||
| 57 | elif proxy_node.missing_line == "symbol": | ||
| 58 | results.append(proxy_node.symbol) | ||
| 59 | else: | ||
| 60 | results.append(proxy_node.answer) | ||
| 61 | |||
| 62 | results.append("\" path: \"") | ||
| 63 | results.append(proxy_path) | ||
| 64 | results.append("\" }\n") | ||
| 65 | |||
| 66 | results.append("}\n") | ||
| 67 | elif node is DoorMain: | ||
| 68 | var door_data = {"door_id": node_id} | ||
| 69 | |||
| 70 | if !node.senders.is_empty(): | ||
| 71 | door_data["senders"] = _parse_node_paths(root_node, node, node.senders) | ||
| 72 | |||
| 73 | if !node.senderGroup.is_empty(): | ||
| 74 | door_data["senderGroup"] = _parse_node_paths(root_node, node, node.senderGroup) | ||
| 75 | |||
| 76 | #results["doors"][node_id] = door_data | ||
| 77 | elif node is Collectable: | ||
| 78 | if node.unlock_type == "key": | ||
| 79 | results.append("letters {\n key: \"") | ||
| 80 | results.append(node.unlock_key) | ||
| 81 | results.append("\"\n") | ||
| 82 | |||
| 83 | if node.level == 2: | ||
| 84 | results.append(" level2: true\n") | ||
| 85 | |||
| 86 | results.append(" path: \"") | ||
| 87 | results.append(node_id) | ||
| 88 | results.append("\"\n}\n") | ||
| 89 | elif node.unlock_type == "smiley": | ||
| 90 | results.append("masteries {\n name: \"MASTERY\"\n path: \"") | ||
| 91 | results.append(node_id) | ||
| 92 | results.append("\"\n}\n") | ||
| 93 | |||
| 94 | elif node is Painting or node is AutoPainting: | ||
| 95 | results.append("paintings {\n name: \"") | ||
| 96 | results.append(node.name.to_upper()) | ||
| 97 | results.append("\"\n path: \"") | ||
| 98 | results.append(node_id) | ||
| 99 | results.append("\"\n}\n") | ||
| 100 | |||
| 101 | elif node is Worldport: | ||
| 102 | results.append("ports {\n name: \"") | ||
| 103 | results.append(node.name.to_upper()) | ||
| 104 | results.append("\"\n path: \"") | ||
| 105 | results.append(node_id) | ||
| 106 | results.append("\"\n}\n") | ||
| 107 | |||
| 108 | elif node is Keyholder: | ||
| 109 | results.append("keyholders {\n name: \"") | ||
| 110 | results.append(node.name.to_upper()) | ||
| 111 | results.append("\"\n path: \"") | ||
| 112 | results.append(node_id) | ||
| 113 | results.append("\"\n}\n") | ||
| 114 | |||
| 115 | for child in node.get_children(): | ||
| 116 | _visit_node(child, results) | ||
| 117 | |||
| 118 | |||
| 119 | func _parse_symbol(symbol): | ||
| 120 | var raw = symbol.strip_edges() | ||
| 121 | var result = [] | ||
| 122 | |||
| 123 | if raw.contains(":Syn") or raw.contains(":Ant"): | ||
| 124 | result.append("sun") | ||
| 125 | if raw.contains(":Add") or raw.contains(":Rem") or raw.contains(":Adp"): | ||
| 126 | result.append("sparkles") | ||
| 127 | if raw.contains(":Hom") or raw.contains(":Rhy"): | ||
| 128 | result.append("zero") | ||
| 129 | if raw.contains(":Cat") or raw.contains(":Exa"): | ||
| 130 | result.append("example") | ||
| 131 | if raw.contains(":Par") or raw.contains(":Who"): | ||
| 132 | result.append("boxes") | ||
| 133 | if raw.contains(":Plu") or raw.contains(":Sin"): | ||
| 134 | result.append("planet") | ||
| 135 | if raw.contains(":Int") or raw.contains(":Dim"): | ||
| 136 | result.append("pyramid") | ||
| 137 | if raw.contains(":Ene") or raw.contains(":Enr") or raw.contains(":Ent"): | ||
| 138 | result.append("cross") | ||
| 139 | if raw.contains(":Swe") or raw.contains(":Swu"): | ||
| 140 | result.append("sweet") | ||
| 141 | if raw.contains(":Mas") or raw.contains(":Fem"): | ||
| 142 | result.append("gender") | ||
| 143 | if raw.contains(":Old") or raw.contains(":You") or raw.contains(":Ten"): | ||
| 144 | result.append("age") | ||
| 145 | if raw.contains(":Sou") or raw.contains(":Sor"): | ||
| 146 | result.append("sound") | ||
| 147 | if raw.contains(":Ana"): | ||
| 148 | result.append("anagram") | ||
| 149 | if raw.contains(":Job") or raw.contains(":Emp"): | ||
| 150 | result.append("job") | ||
| 151 | if raw.contains(":Sur") or raw.contains(":Srr"): | ||
| 152 | result.append("stars") | ||
| 153 | if raw.contains(":Cha"): | ||
| 154 | result.append("null") | ||
| 155 | if raw.contains(":Eva"): | ||
| 156 | result.append("eval") | ||
| 157 | if raw.contains(":Sad") or raw.contains(":Odd") or raw.contains("@"): | ||
| 158 | result.append("lingo") | ||
| 159 | if raw.contains("?"): | ||
| 160 | result.append("question") | ||
| 161 | |||
| 162 | return result | ||
| 163 | |||
| 164 | |||
| 165 | func _parse_node_paths(node, parent, array): | ||
| 166 | var result = [] | ||
| 167 | |||
| 168 | for p in array: | ||
| 169 | result.append(String(node.get_path_to(parent.get_node(p)).get_concatenated_names())) | ||
| 170 | |||
| 171 | return result | ||
