about summary refs log tree commit diff stats
path: root/data/maps/the_wise/metadata.txtpb
blob: 91af34ebc2311b2bdaae8b0d60ccc1708a71fdb4 (plain) (blame)
1
2
3
display_name: "The Wise"
# This port is out of bounds.
excluded_nodes: "Components/Warps/worldport"
lor: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .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 */
func on_map_load(root):
	var ap = global.get_node("Archipelago")

	# Remove the door blocking the trophy case.
	root.get_node("/root/scene/Components/Doors/entry_18").queue_free()

	# Set up mastery listeners for extra maps.
	_set_up_mastery_listener(root, "advanced")
	_set_up_mastery_listener(root, "charismatic")
	_set_up_mastery_listener(root, "crystalline")
	_set_up_mastery_listener(root, "fuzzy")
	_set_up_mastery_listener(root, "icarus")
	_set_up_mastery_listener(root, "stellar")

	if ap.endings_requirement != 12 or ap.masteries_requirement != 0:
		# Set up listeners for the potential White Ending requirements.
		var merging_prefab = preload("res://objects/nodes/listeners/mergingListener.tscn")

		var old_door = root.get_node("/root/scene/Components/Doors/entry_19")
		var new_door = old_door.duplicate()
		new_door.name = "entry_19_new"
		new_door.senders.clear()
		new_door.senderGroup.clear()
		new_door.excludeSenders.clear()

		if ap.endings_requirement == 12:
			new_door.senderGroup.append(NodePath("/root/scene/Meshes/Trophies/Listeners"))
		elif ap.endings_requirement > 0:
			if ap.masteries_requirement == 0:
				new_door.senderGroup.append(NodePath("/root/scene/Meshes/Trophies/Listeners"))
				new_door.complete_at = ap.endings_requirement
			else:
				var endings_merge = merging_prefab.instantiate()
				endings_merge.name = "EndingsMerge"
				endings_merge.senderGroup.append(NodePath("/root/scene/Meshes/Trophies/Listeners"))
				endings_merge.complete_at = ap.endings_requirement
				root.get_node("/root/scene/Components").add_child.call_deferred(endings_merge)
				new_door.senders.append(NodePath("/root/scene/Components/EndingsMerge"))

		var max_masteries = 13 + ap.enable_gift_maps.size()
		if ap.enable_icarus:
			max_masteries += 1

		if ap.masteries_requirement == max_masteries:
			new_door.senderGroup.append(NodePath("/root/scene/Meshes/Trophies/MasteryListeners"))
			new_door.excludeSenders.append(
				NodePath("/root/scene/Meshes/Trophies/MasteryListeners/unlockReaderListenerWhite")
			)
		elif ap.masteries_requirement > 0:
			if ap.endings_requirement == 0:
				new_door.senderGroup.append(
					NodePath("/root/scene/Meshes/Trophies/MasteryListeners")
				)
				new_door.excludeSenders.append(
					NodePath(
						"/root/scene/Meshes/Trophies/MasteryListeners/unlockReaderListenerWhite"
					)
				)
				new_door.complete_at = ap.masteries_requirement
			else:
				var masteries_merge = merging_prefab.instantiate()
				masteries_merge.name = "MasteriesMerge"
				masteries_merge.senderGroup.append(
					NodePath("/root/scene/Meshes/Trophies/MasteryListeners")
				)
				masteries_merge.excludeSenders.append(
					NodePath(
						"/root/scene/Meshes/Trophies/MasteryListeners/unlockReaderListenerWhite"
					)
				)
				masteries_merge.complete_at = ap.masteries_requirement
				root.get_node("/root/scene/Components").add_child.call_deferred(masteries_merge)
				new_door.senders.append(NodePath("/root/scene/Components/MasteriesMerge"))

		old_door.queue_free()
		root.get_node("/root/scene/Components/Doors").add_child.call_deferred(new_door)


func _set_up_mastery_listener(root, name):
	var prefab = preload("res://objects/nodes/listeners/unlockReaderListener.tscn")
	var url = prefab.instantiate()
	url.name = "unlockReaderListenerMastery_%s" % name
	url.key = "%s_mastery" % name
	url.value = "unlocked"
	root.get_node("/root/scene/Meshes/Trophies/MasteryListeners").add_child.call_deferred(url)