diff options
Diffstat (limited to 'Archipelago')
-rw-r--r-- | Archipelago/client.gd | 6 | ||||
-rw-r--r-- | Archipelago/effects.gd | 27 | ||||
-rw-r--r-- | Archipelago/panel.gd | 20 |
3 files changed, 51 insertions, 2 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 1fe354a..6211ad7 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
@@ -644,6 +644,8 @@ func processItem(item, index, from, flags): | |||
644 | effects_node.trigger_slowness_trap() | 644 | effects_node.trigger_slowness_trap() |
645 | if item_name == "Iceland Trap": | 645 | if item_name == "Iceland Trap": |
646 | effects_node.trigger_iceland_trap() | 646 | effects_node.trigger_iceland_trap() |
647 | if item_name == "Atbash Trap": | ||
648 | effects_node.trigger_atbash_trap() | ||
647 | 649 | ||
648 | 650 | ||
649 | func doorIsVanilla(door): | 651 | func doorIsVanilla(door): |
@@ -654,6 +656,10 @@ func paintingIsVanilla(painting): | |||
654 | return !_mentioned_paintings.has(painting) | 656 | return !_mentioned_paintings.has(painting) |
655 | 657 | ||
656 | 658 | ||
659 | func evaluateSolvability(): | ||
660 | emit_signal("evaluate_solvability") | ||
661 | |||
662 | |||
657 | func colorForItemType(flags): | 663 | func colorForItemType(flags): |
658 | var int_flags = int(flags) | 664 | var int_flags = int(flags) |
659 | if int_flags & 1: # progression | 665 | if int_flags & 1: # progression |
diff --git a/Archipelago/effects.gd b/Archipelago/effects.gd index a11ab42..04c79b6 100644 --- a/Archipelago/effects.gd +++ b/Archipelago/effects.gd | |||
@@ -4,6 +4,7 @@ var activated = false | |||
4 | var effect_running = false | 4 | var effect_running = false |
5 | var slowness_remaining = 0 | 5 | var slowness_remaining = 0 |
6 | var iceland_remaining = 0 | 6 | var iceland_remaining = 0 |
7 | var atbash_remaining = 0 | ||
7 | var queued_iceland = 0 | 8 | var queued_iceland = 0 |
8 | 9 | ||
9 | var orig_env | 10 | var orig_env |
@@ -70,10 +71,23 @@ func trigger_iceland_trap(): | |||
70 | _process_effects() | 71 | _process_effects() |
71 | 72 | ||
72 | 73 | ||
74 | func trigger_atbash_trap(): | ||
75 | if atbash_remaining == 0: | ||
76 | atbash_remaining += 60 | ||
77 | |||
78 | var apclient = global.get_node("Archipelago") | ||
79 | apclient.evaluateSolvability() | ||
80 | else: | ||
81 | atbash_remaining += 60 | ||
82 | |||
83 | if not effect_running: | ||
84 | _process_effects() | ||
85 | |||
86 | |||
73 | func _process_effects(): | 87 | func _process_effects(): |
74 | effect_running = true | 88 | effect_running = true |
75 | 89 | ||
76 | while slowness_remaining > 0 or iceland_remaining > 0: | 90 | while slowness_remaining > 0 or iceland_remaining > 0 or atbash_remaining > 0: |
77 | var text = "" | 91 | var text = "" |
78 | if slowness_remaining > 0: | 92 | if slowness_remaining > 0: |
79 | text += "Slowness: %d seconds" % slowness_remaining | 93 | text += "Slowness: %d seconds" % slowness_remaining |
@@ -81,6 +95,10 @@ func _process_effects(): | |||
81 | if not text.empty(): | 95 | if not text.empty(): |
82 | text += "\n" | 96 | text += "\n" |
83 | text += "Iceland: %d seconds" % iceland_remaining | 97 | text += "Iceland: %d seconds" % iceland_remaining |
98 | if atbash_remaining > 0: | ||
99 | if not text.empty(): | ||
100 | text += "\n" | ||
101 | text += "Atbash: %d seconds" % atbash_remaining | ||
84 | self.get_node("label").text = text | 102 | self.get_node("label").text = text |
85 | 103 | ||
86 | yield(get_tree().create_timer(1.0), "timeout") | 104 | yield(get_tree().create_timer(1.0), "timeout") |
@@ -101,5 +119,12 @@ func _process_effects(): | |||
101 | orig_env | 119 | orig_env |
102 | ) | 120 | ) |
103 | 121 | ||
122 | if atbash_remaining > 0: | ||
123 | atbash_remaining -= 1 | ||
124 | |||
125 | if atbash_remaining == 0: | ||
126 | var apclient = global.get_node("Archipelago") | ||
127 | apclient.evaluateSolvability() | ||
128 | |||
104 | self.get_node("label").text = "" | 129 | self.get_node("label").text = "" |
105 | effect_running = false | 130 | effect_running = false |
diff --git a/Archipelago/panel.gd b/Archipelago/panel.gd index 6ec5e14..bf43653 100644 --- a/Archipelago/panel.gd +++ b/Archipelago/panel.gd | |||
@@ -2,16 +2,29 @@ extends Node | |||
2 | 2 | ||
3 | var data = {} | 3 | var data = {} |
4 | var orig_text = "" | 4 | var orig_text = "" |
5 | var atbash_text = "" | ||
5 | var orig_color = Color(0, 0, 0, 0) | 6 | var orig_color = Color(0, 0, 0, 0) |
6 | 7 | ||
8 | const kAtbashPre = "abcdefghijklmnopqrstuvwxyz1234567890+-" | ||
9 | const kAtbashPost = "zyxwvutsrqponmlkjihgfedcba0987654321-+" | ||
10 | |||
7 | 11 | ||
8 | func _ready(): | 12 | func _ready(): |
9 | orig_text = self.get_parent().get_node("Viewport/GUI/Panel/Label").text | 13 | orig_text = self.get_parent().get_node("Viewport/GUI/Panel/Label").text |
10 | orig_color = self.get_parent().get_node("Quad").get_surface_material(0).albedo_color | 14 | orig_color = self.get_parent().get_node("Quad").get_surface_material(0).albedo_color |
11 | 15 | ||
16 | for i in range(0, orig_text.length()): | ||
17 | var old_char = orig_text[i] | ||
18 | if old_char in kAtbashPre: | ||
19 | var j = kAtbashPre.find(old_char) | ||
20 | atbash_text += kAtbashPost[j] | ||
21 | else: | ||
22 | atbash_text += old_char | ||
23 | |||
12 | 24 | ||
13 | func evaluate_solvability(): | 25 | func evaluate_solvability(): |
14 | var apclient = global.get_node("Archipelago") | 26 | var apclient = global.get_node("Archipelago") |
27 | var effects = get_tree().get_root().get_node("Spatial/AP_Effects") | ||
15 | 28 | ||
16 | var solvable = true | 29 | var solvable = true |
17 | var missing = [] | 30 | var missing = [] |
@@ -23,7 +36,10 @@ func evaluate_solvability(): | |||
23 | solvable = false | 36 | solvable = false |
24 | 37 | ||
25 | if solvable: | 38 | if solvable: |
26 | self.get_parent().get_node("Viewport/GUI/Panel/Label").text = orig_text | 39 | if effects.atbash_remaining > 0: |
40 | self.get_parent().get_node("Viewport/GUI/Panel/Label").text = atbash_text | ||
41 | else: | ||
42 | self.get_parent().get_node("Viewport/GUI/Panel/Label").text = orig_text | ||
27 | self.get_parent().get_node("Viewport/GUI/Panel/TextEdit").editable = true | 43 | self.get_parent().get_node("Viewport/GUI/Panel/TextEdit").editable = true |
28 | self.get_parent().get_node("Quad").get_surface_material(0).albedo_color = orig_color | 44 | self.get_parent().get_node("Quad").get_surface_material(0).albedo_color = orig_color |
29 | else: | 45 | else: |
@@ -37,3 +53,5 @@ func evaluate_solvability(): | |||
37 | self.get_parent().get_node("Quad").get_surface_material(0).albedo_color = Color( | 53 | self.get_parent().get_node("Quad").get_surface_material(0).albedo_color = Color( |
38 | 0.7, 0.2, 0.2 | 54 | 0.7, 0.2, 0.2 |
39 | ) | 55 | ) |
56 | |||
57 | self.get_parent().get_node("Viewport").render_target_update_mode = 1 | ||