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 /Archipelago | |
| parent | 8175ffdc895392764613a8bb6c738c49926d5773 (diff) | |
| download | lingo-archipelago-72bb06c42fcab5c215ff034e8445c33057e0c23d.tar.gz lingo-archipelago-72bb06c42fcab5c215ff034e8445c33057e0c23d.tar.bz2 lingo-archipelago-72bb06c42fcab5c215ff034e8445c33057e0c23d.zip | |
Persist traps between connections
Diffstat (limited to 'Archipelago')
| -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() |
