diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2024-02-04 13:49:06 -0500 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2024-02-04 13:49:06 -0500 |
commit | 72bb06c42fcab5c215ff034e8445c33057e0c23d (patch) | |
tree | ab1c15c52567fbdf3c8a1cf89dc0aee149c97500 | |
parent | 8175ffdc895392764613a8bb6c738c49926d5773 (diff) | |
download | lingo-archipelago-72bb06c42fcab5c215ff034e8445c33057e0c23d.tar.gz lingo-archipelago-72bb06c42fcab5c215ff034e8445c33057e0c23d.tar.bz2 lingo-archipelago-72bb06c42fcab5c215ff034e8445c33057e0c23d.zip |
Persist traps between connections
-rw-r--r-- | Archipelago/client.gd | 28 | ||||
-rw-r--r-- | Archipelago/effects.gd | 34 | ||||
-rw-r--r-- | Archipelago/load.gd | 9 |
3 files changed, 63 insertions, 8 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 788f6ca..3a2a783 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
@@ -112,6 +112,9 @@ var _progressive_progress = {} | |||
112 | var _has_colors = ["white"] | 112 | var _has_colors = ["white"] |
113 | var _received_indexes = [] | 113 | var _received_indexes = [] |
114 | var _puzzle_skips = 0 | 114 | var _puzzle_skips = 0 |
115 | var _cached_slowness = 0 | ||
116 | var _cached_iceland = 0 | ||
117 | var _cached_atbash = 0 | ||
115 | 118 | ||
116 | signal could_not_connect | 119 | signal could_not_connect |
117 | signal connect_status | 120 | signal connect_status |
@@ -297,6 +300,21 @@ func _on_data(): | |||
297 | 300 | ||
298 | if localdata.size() > 1: | 301 | if localdata.size() > 1: |
299 | _puzzle_skips = localdata[1] | 302 | _puzzle_skips = localdata[1] |
303 | |||
304 | if localdata.size() > 2: | ||
305 | _cached_slowness = localdata[2] | ||
306 | else: | ||
307 | _cached_slowness = 0 | ||
308 | |||
309 | if localdata.size() > 3: | ||
310 | _cached_iceland = localdata[3] | ||
311 | else: | ||
312 | _cached_iceland = 0 | ||
313 | |||
314 | if localdata.size() > 4: | ||
315 | _cached_atbash = localdata[4] | ||
316 | else: | ||
317 | _cached_atbash = 0 | ||
300 | 318 | ||
301 | requestSync() | 319 | requestSync() |
302 | 320 | ||
@@ -450,7 +468,15 @@ func saveLocaldata(): | |||
450 | var file = File.new() | 468 | var file = File.new() |
451 | file.open(_localdata_file, File.WRITE) | 469 | file.open(_localdata_file, File.WRITE) |
452 | 470 | ||
453 | var data = [_last_new_item, _puzzle_skips] | 471 | var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects") |
472 | |||
473 | var data = [ | ||
474 | _last_new_item, | ||
475 | _puzzle_skips, | ||
476 | effects_node.slowness_remaining, | ||
477 | effects_node.iceland_remaining, | ||
478 | effects_node.atbash_remaining | ||
479 | ] | ||
454 | file.store_var(data, true) | 480 | file.store_var(data, true) |
455 | file.close() | 481 | file.close() |
456 | 482 | ||
diff --git a/Archipelago/effects.gd b/Archipelago/effects.gd index e6d2dcd..1e2e311 100644 --- a/Archipelago/effects.gd +++ b/Archipelago/effects.gd | |||
@@ -58,13 +58,13 @@ func _ready(): | |||
58 | func activate(): | 58 | func activate(): |
59 | activated = true | 59 | activated = true |
60 | 60 | ||
61 | for _i in range(0, queued_iceland): | 61 | if queued_iceland > 0: |
62 | trigger_iceland_trap() | 62 | trigger_iceland_trap(queued_iceland) |
63 | 63 | ||
64 | queued_iceland = 0 | 64 | queued_iceland = 0 |
65 | 65 | ||
66 | 66 | ||
67 | func trigger_slowness_trap(): | 67 | func trigger_slowness_trap(length = 30): |
68 | if slowness_remaining == 0: | 68 | if slowness_remaining == 0: |
69 | var player = get_tree().get_root().get_node("Spatial/player") | 69 | var player = get_tree().get_root().get_node("Spatial/player") |
70 | player.walk_speed = orig_walk / 2.0 | 70 | player.walk_speed = orig_walk / 2.0 |
@@ -72,13 +72,16 @@ func trigger_slowness_trap(): | |||
72 | 72 | ||
73 | $SlownessTimer.start() | 73 | $SlownessTimer.start() |
74 | 74 | ||
75 | slowness_remaining += 30 | 75 | slowness_remaining += length |
76 | text_dirty = true | 76 | text_dirty = true |
77 | 77 | ||
78 | var apclient = global.get_node("Archipelago") | ||
79 | apclient.saveLocaldata() | ||
78 | 80 | ||
79 | func trigger_iceland_trap(): | 81 | |
82 | func trigger_iceland_trap(length = 60): | ||
80 | if not activated: | 83 | if not activated: |
81 | queued_iceland += 1 | 84 | queued_iceland += length |
82 | return | 85 | return |
83 | 86 | ||
84 | if iceland_remaining == 0: | 87 | if iceland_remaining == 0: |
@@ -88,9 +91,12 @@ func trigger_iceland_trap(): | |||
88 | 91 | ||
89 | $IcelandTimer.start() | 92 | $IcelandTimer.start() |
90 | 93 | ||
91 | iceland_remaining += 60 | 94 | iceland_remaining += length |
92 | text_dirty = true | 95 | text_dirty = true |
93 | 96 | ||
97 | var apclient = global.get_node("Archipelago") | ||
98 | apclient.saveLocaldata() | ||
99 | |||
94 | 100 | ||
95 | func trigger_atbash_trap(): | 101 | func trigger_atbash_trap(): |
96 | var newly_atbash = (atbash_remaining == 0) | 102 | var newly_atbash = (atbash_remaining == 0) |
@@ -102,6 +108,9 @@ func trigger_atbash_trap(): | |||
102 | 108 | ||
103 | text_dirty = true | 109 | text_dirty = true |
104 | 110 | ||
111 | var apclient = global.get_node("Archipelago") | ||
112 | apclient.saveLocaldata() | ||
113 | |||
105 | 114 | ||
106 | func deactivate_atbash_trap(): | 115 | func deactivate_atbash_trap(): |
107 | if atbash_remaining > 0: | 116 | if atbash_remaining > 0: |
@@ -112,6 +121,9 @@ func deactivate_atbash_trap(): | |||
112 | apclient.evaluateSolvability() | 121 | apclient.evaluateSolvability() |
113 | 122 | ||
114 | text_dirty = true | 123 | text_dirty = true |
124 | |||
125 | var apclient = global.get_node("Archipelago") | ||
126 | apclient.saveLocaldata() | ||
115 | 127 | ||
116 | 128 | ||
117 | func show_puzzle_skip_message(node_path): | 129 | func show_puzzle_skip_message(node_path): |
@@ -180,6 +192,10 @@ func _tick_slowness(): | |||
180 | player.run_speed = orig_run | 192 | player.run_speed = orig_run |
181 | 193 | ||
182 | $SlownessTimer.stop() | 194 | $SlownessTimer.stop() |
195 | |||
196 | if slowness_remaining % 5 == 0: | ||
197 | var apclient = global.get_node("Archipelago") | ||
198 | apclient.saveLocaldata() | ||
183 | 199 | ||
184 | 200 | ||
185 | func _tick_iceland(): | 201 | func _tick_iceland(): |
@@ -192,6 +208,10 @@ func _tick_iceland(): | |||
192 | ) | 208 | ) |
193 | 209 | ||
194 | $IcelandTimer.stop() | 210 | $IcelandTimer.stop() |
211 | |||
212 | if iceland_remaining % 5 == 0: | ||
213 | var apclient = global.get_node("Archipelago") | ||
214 | apclient.saveLocaldata() | ||
195 | 215 | ||
196 | 216 | ||
197 | func _process(_delta): | 217 | func _process(_delta): |
diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 7f86c91..a277817 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
@@ -565,6 +565,15 @@ func _load(): | |||
565 | global._print("Hooked Load End") | 565 | global._print("Hooked Load End") |
566 | ._load() | 566 | ._load() |
567 | 567 | ||
568 | # Activate any cached traps. | ||
569 | if apclient._cached_slowness > 0: | ||
570 | effects.trigger_slowness_trap(apclient._cached_slowness) | ||
571 | if apclient._cached_iceland > 0: | ||
572 | effects.trigger_iceland_trap(apclient._cached_iceland) | ||
573 | if apclient._cached_atbash > 0: | ||
574 | for _i in range(0, apclient._cached_atbash): | ||
575 | effects.trigger_atbash_trap() | ||
576 | |||
568 | # Process any items received while the map was loading, and send the checks | 577 | # Process any items received while the map was loading, and send the checks |
569 | # from the save load. | 578 | # from the save load. |
570 | apclient.mapFinishedLoading() | 579 | apclient.mapFinishedLoading() |