blob: de9ae4b55d63692b4c92081faad9e24a0ee22735 (
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
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)
|