about summary refs log tree commit diff stats
path: root/data/maps/four_rooms/rooms/Intensify Room.txtpb
blob: 2cbb214774d53983ef3eb21f4cf487fba11a6228 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
name: "Intensify Room"
panels {
  name: "SMALL"
  path: "Panels/Room 1 Intensify/entry_1"
  clue: "small"
  answer: "tiny"
  symbols: PYRAMID
}
panels {
  name: "LIKE"
  path: "Panels/Room 1 Intensify/entry_2"
  clue: "like"
  answer: "love"
  symbols: PYRAMID
}
panels {
  name: "LARGE"
  path: "Panels/Room 1 Intensify/entry_3"
  clue: "large"
  answer: "huge"
  symbols: PYRAMID
}
panels {
  name: "TERROR"
  path: "Panels/Room 1 Intensify/entry_4"
  clue: "terror"
  answer: "fear"
  symbols: PYRAMID
}
panels {
  name: "BETTER"
  path: "Panels/Room 1 Intensify/entry_5"
  clue: "better"
  answer: "best"
  symbols: PYRAMID
}
panels {
  name: "TURN"
  path: "Panels/Room 1 Intensify/entry_6"
  clue: "turn"
  answer: "spin"
  symbols: PYRAMID
}
panels {
  name: "INJURY"
  path: "Panels/Room 1 Intensify/entry_7"
  clue: "injury"
  answer: "death"
  symbols: PYRAMID
}
panels {
  name: "SWAY"
  path: "Panels/Room 1 Intensify/entry_8"
  clue: "sway"
  answer: "dance"
  symbols: PYRAMID
}
ports {
  name: "IMPRESSIVE"
  path: "Components/Warps/worldport"
  orientation: "south"
}
highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
@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