blob: 04c79b669f936a0b0487b6eb2ba1e52a2ad99884 (
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
extends Node
var activated = false
var effect_running = false
var slowness_remaining = 0
var iceland_remaining = 0
var atbash_remaining = 0
var queued_iceland = 0
var orig_env
var orig_walk
var orig_run
func _ready():
orig_env = get_tree().get_root().get_node("Spatial/player/pivot/camera").environment
orig_walk = get_tree().get_root().get_node("Spatial/player").walk_speed
orig_run = get_tree().get_root().get_node("Spatial/player").run_speed
var label = Label.new()
label.set_name("label")
label.margin_right = 1920.0 - 20.0
label.margin_top = 20.0
label.align = Label.ALIGN_RIGHT
label.valign = Label.VALIGN_TOP
var dynamic_font = DynamicFont.new()
dynamic_font.font_data = load("res://fonts/Lingo.ttf")
dynamic_font.size = 36
dynamic_font.outline_color = Color(0, 0, 0, 1)
dynamic_font.outline_size = 2
label.add_font_override("font", dynamic_font)
add_child(label)
func activate():
activated = true
for _i in range(0, queued_iceland):
trigger_iceland_trap()
queued_iceland = 0
func trigger_slowness_trap():
if slowness_remaining == 0:
var player = get_tree().get_root().get_node("Spatial/player")
player.walk_speed = orig_walk / 2.0
player.run_speed = orig_run / 2.0
slowness_remaining += 30
if not effect_running:
_process_effects()
func trigger_iceland_trap():
if not activated:
queued_iceland += 1
return
if iceland_remaining == 0:
get_tree().get_root().get_node("Spatial/player/pivot/camera").set_environment(
load("res://environments/level_iceland.tres")
)
iceland_remaining += 60
if not effect_running:
_process_effects()
func trigger_atbash_trap():
if atbash_remaining == 0:
atbash_remaining += 60
var apclient = global.get_node("Archipelago")
apclient.evaluateSolvability()
else:
atbash_remaining += 60
if not effect_running:
_process_effects()
func _process_effects():
effect_running = true
while slowness_remaining > 0 or iceland_remaining > 0 or atbash_remaining > 0:
var text = ""
if slowness_remaining > 0:
text += "Slowness: %d seconds" % slowness_remaining
if iceland_remaining > 0:
if not text.empty():
text += "\n"
text += "Iceland: %d seconds" % iceland_remaining
if atbash_remaining > 0:
if not text.empty():
text += "\n"
text += "Atbash: %d seconds" % atbash_remaining
self.get_node("label").text = text
yield(get_tree().create_timer(1.0), "timeout")
if slowness_remaining > 0:
slowness_remaining -= 1
if slowness_remaining == 0:
var player = get_tree().get_root().get_node("Spatial/player")
player.walk_speed = orig_walk
player.run_speed = orig_run
if iceland_remaining > 0:
iceland_remaining -= 1
if iceland_remaining == 0:
get_tree().get_root().get_node("Spatial/player/pivot/camera").set_environment(
orig_env
)
if atbash_remaining > 0:
atbash_remaining -= 1
if atbash_remaining == 0:
var apclient = global.get_node("Archipelago")
apclient.evaluateSolvability()
self.get_node("label").text = ""
effect_running = false
|