about summary refs log tree commit diff stats
path: root/apworld/client/maps/icarus.gd
blob: ad00741895acc3eb9074231b3271e4efabd7fd9f (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
func on_map_load(root):
	var ap = global.get_node("Archipelago")

	# Add the mastery to Icarus.
	if ap.enable_icarus:
		var collectable_prefab = preload("res://objects/nodes/collectable.tscn")
		var saver_prefab = preload("res://objects/nodes/saver.tscn")
		var tpl_prefab = preload("res://objects/nodes/listeners/teleportListener.tscn")
		var usl_prefab = preload("res://objects/nodes/listeners/unlockSetterListener.tscn")

		var mastery = collectable_prefab.instantiate()
		mastery.name = "collectable"
		mastery.position = Vector3(0, -2000, 0)
		mastery.unlock_type = "smiley"
		mastery.material_override = load("res://assets/materials/gold.material")
		root.get_node("/root/scene/Components/Collectables").add_child.call_deferred(mastery)

		var tpl = tpl_prefab.instantiate()
		tpl.teleport_point = Vector3(56.25, 0, -5.5)
		tpl.teleport_rotate = Vector3(0, 0, 0)
		tpl.target_path = mastery
		tpl.name = "Teleport"
		tpl.senderGroup.append(NodePath("/root/scene/Panels"))
		tpl.nested = true
		mastery.add_child.call_deferred(tpl)

		var usl = usl_prefab.instantiate()
		usl.name = "unlockSetterListenerMastery"
		usl.key = "icarus_mastery"
		usl.value = "unlocked"
		usl.senders.append(NodePath("/root/scene/Components/Collectables/collectable"))
		root.get_node("/root/scene/Components").add_child.call_deferred(usl)

		var saver = saver_prefab.instantiate()
		saver.name = "saver_collectables"
		saver.type = "collectables"
		saver.senderGroup.append(NodePath("/root/scene/Components/Collectables"))
		root.get_node("/root/scene").add_child.call_deferred(saver)