From 60bfc95698c6318a37b08b33944a2a21beb14bc3 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 2 Feb 2024 11:36:24 -0500 Subject: group subdirective was renamed --- util/generate_gamedata.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/generate_gamedata.rb b/util/generate_gamedata.rb index 5e03655..f63e062 100644 --- a/util/generate_gamedata.rb +++ b/util/generate_gamedata.rb @@ -132,9 +132,9 @@ config.each do |room_name, room_data| internal_door_ids = door["id"] end - if door.include? "group" - door_groups[door["group"]] ||= Set[] - door_groups[door["group"]].merge(internal_door_ids) + if door.include? "door_group" + door_groups[door["door_group"]] ||= Set[] + door_groups[door["door_group"]].merge(internal_door_ids) end door_ids_by_item_id[item_id] = internal_door_ids -- cgit 1.4.1 From 46280f772defd53d1c78b756be9c68e5c3ba0b75 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 23 Mar 2024 17:33:23 -0400 Subject: Replace the roof of The Artistic in painting shuffle --- Archipelago/load.gd | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Archipelago/load.gd b/Archipelago/load.gd index a277817..66c9b8a 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd @@ -437,6 +437,26 @@ func _load(): var chosen_painting = remaining[rng.randi_range(0, remaining.size() - 1)] instantiate_painting(painting, chosen_painting) + + # Replace the roof of The Artistic. + var artistic_paintings = [ + ["smile_painting_9", -49.5, 44.5], + ["cherry_painting3", -38.5, 44.5], + ["boxes_painting2", -38.5, 55.5], + ["panda_painting_3", -49.5, 55.5] + ] + for painting in artistic_paintings: + var painting_node = get_node("AP_Paintings").get_node(painting[0]).get_node("GridMap") + var small_mesh_library = painting_node.mesh_library + + for x in range(0,10): + for y in range(0,10): + var cellitem = painting_node.get_cell_item(-5 + x, 1+y, 0) + var meshitem = small_mesh_library.get_item_name(cellitem) + if meshitem.begins_with("Tiny"): + meshitem = meshitem.substr(4) + set_gridmap_tile(painting[1]+9-y, 8.5, painting[2]+x, meshitem) + # We need to make some changes to the Art Gallery. The player should always # have access to the backroom, but they shouldn't have access to ORDER until @@ -640,8 +660,10 @@ func set_gridmap_tile(x, y, z, tile): var gridmap = self.get_node("GridMap") var mesh_library = gridmap.mesh_library var mapvec = gridmap.world_to_map(gridmap.to_local(Vector3(x, y, z))) + var cellitem = mesh_library.find_item_by_name(tile) - gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, mesh_library.find_item_by_name(tile)) + if cellitem != GridMap.INVALID_CELL_ITEM: + gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, cellitem) func clear_gridmap_tile(x, y, z): -- cgit 1.4.1 From 5a555c5c07bdddc5b106e377ef38ca7852e7de70 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 23 Mar 2024 22:38:23 -0400 Subject: Transition into using level1_stable --- Archipelago/settings_screen.gd | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index 2cabe09..7f50f51 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd @@ -104,8 +104,13 @@ func connectionSuccessful(): # Switch to LL1 Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - global.map = "level1" global.save_file = apclient.getSaveFileName() + + if Directory.new().file_exists("user://level1/%s.save" % global.save_file): + global.map = "level1" + else: + global.map = "level1_stable" + var _discard = get_tree().change_scene("res://scenes/load_screen.tscn") -- cgit 1.4.1 From 37be40c8129ccaa3cd26629c383f1d9d03523366 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 24 Mar 2024 09:57:05 -0400 Subject: Geronimo gets you a puzzle skip --- Archipelago/client.gd | 20 ++++++++++++++++++-- Archipelago/load.gd | 3 +++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 06fb3a6..05294d5 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -115,6 +115,7 @@ var _puzzle_skips = 0 var _cached_slowness = 0 var _cached_iceland = 0 var _cached_atbash = 0 +var _geronimo_skip = false signal could_not_connect signal connect_status @@ -300,7 +301,7 @@ func _on_data(): if localdata.size() > 1: _puzzle_skips = localdata[1] - + if localdata.size() > 2: _cached_slowness = localdata[2] else: @@ -316,6 +317,11 @@ func _on_data(): else: _cached_atbash = 0 + if localdata.size() > 5: + _geronimo_skip = localdata[5] + else: + _geronimo_skip = false + requestSync() emit_signal("client_connected") @@ -475,7 +481,8 @@ func saveLocaldata(): _puzzle_skips, effects_node.slowness_remaining, effects_node.iceland_remaining, - effects_node.atbash_remaining + effects_node.atbash_remaining, + _geronimo_skip ] file.store_var(data, true) file.close() @@ -720,6 +727,15 @@ func usePuzzleSkip(): saveLocaldata() +func geronimo(): + if !_geronimo_skip: + messages.showMessage("Geronimo! You found a puzzle skip.") + + _puzzle_skips += 1 + _geronimo_skip = true + saveLocaldata() + + func colorForItemType(flags): var int_flags = int(flags) if int_flags & 1: # progression diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 66c9b8a..207550b 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd @@ -577,6 +577,9 @@ func _load(): var multiplayer_node = apclient.SCRIPT_multiplayer.new() multiplayer_node.ghost_mode = true add_child(multiplayer_node) + + # Hook up Geronimo handler. + $player.connect("player_jumped", apclient, "geronimo") # Hook up the scene to be able to handle connection failures. apclient.connect("could_not_connect", self, "archipelago_disconnected") -- cgit 1.4.1 From 13271d4b8f66488a55be256e44a118ff8fff1ec1 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 25 Mar 2024 20:54:03 -0400 Subject: Fix Wanderer entrance door on reload Turns out when you instantiate scripts with exported reference fields, you have to create new values for those fields because otherwise they use a shared value like idk man it's weird. --- Archipelago/load.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 207550b..3e11b8b 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd @@ -64,7 +64,7 @@ func _load(): wanderer_entrance.rotation = Vector3(0, -PI / 2, 0) wanderer_entrance.scale = Vector3(1, 1.5, 1) wanderer_entrance.set_script(door_script) - wanderer_entrance.panels.append("../../../Panels/Tower Room/Panel_wanderlust_1234567890") + wanderer_entrance.panels = ["../../../Panels/Tower Room/Panel_wanderlust_1234567890"] get_node("Doors/Tower Room Area Doors").add_child(wanderer_entrance) var wanderer_achieve = get_node("Panels/Tower Room/Panel_1234567890_wanderlust") -- cgit 1.4.1 From 01c1f08379d22b36f3eaedfa355c6e49ef3fa820 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 28 Mar 2024 23:45:40 -0400 Subject: AFD inverted camera --- Archipelago/player.gd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Archipelago/player.gd b/Archipelago/player.gd index 87d9d0c..244d9a8 100644 --- a/Archipelago/player.gd +++ b/Archipelago/player.gd @@ -1,5 +1,13 @@ extends "res://scripts/player.gd" +var april_fools = false + + +func _ready(): + var date = Time.get_date_dict_from_system() + if date["month"] == 4 && date["day"] == 1: + april_fools = true + func _solving(): ._solving() @@ -22,3 +30,10 @@ func _unhandled_input(event): if event.pressed and event.scancode == KEY_P: var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects") effects_node.skip_puzzle() + + +func rotate_y(amount): + if april_fools: + .rotate_y(-amount) + else: + .rotate_y(amount) -- cgit 1.4.1 From 138ab8e0b86e1737cd4656769a14de07b78c3c30 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 29 Mar 2024 00:11:18 -0400 Subject: AFD notnerb --- Archipelago/load.gd | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 3e11b8b..dc4049e 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd @@ -25,6 +25,11 @@ func _load(): var apclient = global.get_node("Archipelago") var panels_parent = self.get_node("Panels") + var date = Time.get_date_dict_from_system() + var april_fools = false + if date["month"] == 4 && date["day"] == 1: + april_fools = true + # Add a wall-blocked raycast to the player. var wallcast = RayCast.new() wallcast.name = "wallcast" @@ -406,6 +411,8 @@ func _load(): if not classes.has(painting): var i = rng.randi_range(0, all_paintings.size() - 1) var chosen = all_paintings[i] + if april_fools: + chosen = "bg_notnerb" classes[painting] = chosen all_paintings.remove(i) @@ -430,6 +437,9 @@ func _load(): var j = rng.randi_range(0, all_paintings.size() - 1) remaining.append(all_paintings[j]) all_paintings.remove(j) + + if april_fools: + remaining = ["bg_notnerb"] for painting in gamedata.paintings.keys(): if randomized.has(painting): @@ -581,6 +591,14 @@ func _load(): # Hook up Geronimo handler. $player.connect("player_jumped", apclient, "geronimo") + if april_fools: + # Change the appearance of every painting. + var notnerb_painting = load("res://nodes/paintings/bg_notnerb.tscn").instance() + for child in $Decorations/Paintings.get_children(): + if child.get_node_or_null("GridMap") != null: + child.get_node("GridMap").queue_free() + child.add_child(notnerb_painting.get_node("GridMap").duplicate(true)) + # Hook up the scene to be able to handle connection failures. apclient.connect("could_not_connect", self, "archipelago_disconnected") -- cgit 1.4.1 From c1b31d2cac0bea12ff25da723e8df2780681a71f Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 29 Mar 2024 10:28:20 -0400 Subject: Released v1.2.1 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9915d06..676ae4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # lingo-archipelago Releases +## v1.2.1 - 2024-03-29 + +- Fixed the entrance to The Wanderer not opening after disconnecting from + Archipelago and connecting again without closing the game. + +Download: +[lingo-archipelago-v1.2.1.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v1.2.1.zip)
+Source: [v1.2.1](https://code.fourisland.com/lingo-archipelago/tag/?h=v1.2.1) + ## v1.2.0 - 2024-02-04 - The "Press P to skip puzzle" message will no longer appear when the cursor is -- cgit 1.4.1 From 86b0cea063d3e6d5fd20e8bee1f5ab13b1547482 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 31 Mar 2024 23:27:39 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 1ba52d7..47357ee 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -15,7 +15,7 @@ var ap_pass = "" var confusify_world = false var enable_multiplayer = false -const my_version = "2.0.0-beta2" +const my_version = "2.0.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1 From a6fa27bf9b8196f844281b2c6ab1a390178aee2e Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 1 Apr 2024 09:36:14 -0400 Subject: AFD 2024: Remove inverted camera thing --- Archipelago/player.gd | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/Archipelago/player.gd b/Archipelago/player.gd index 244d9a8..87d9d0c 100644 --- a/Archipelago/player.gd +++ b/Archipelago/player.gd @@ -1,13 +1,5 @@ extends "res://scripts/player.gd" -var april_fools = false - - -func _ready(): - var date = Time.get_date_dict_from_system() - if date["month"] == 4 && date["day"] == 1: - april_fools = true - func _solving(): ._solving() @@ -30,10 +22,3 @@ func _unhandled_input(event): if event.pressed and event.scancode == KEY_P: var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects") effects_node.skip_puzzle() - - -func rotate_y(amount): - if april_fools: - .rotate_y(-amount) - else: - .rotate_y(amount) -- cgit 1.4.1 From 0b1ea0dbc89b231d2b4847d0fb7dc5b23e060b0c Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 1 Apr 2024 14:19:54 -0400 Subject: Released v2.0.0 --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 676ae4b..0c4cae8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # lingo-archipelago Releases +## v2.0.0 - 2024-04-01 + +- [Archipelago 0.4.5](https://github.com/ArchipelagoMW/Archipelago/releases/tag/0.4.5) + has been released! This update includes various small changes to the Lingo + world, most notably making The Colorful into a countdown achievement, and + making the doors in The Colorful optionally progressive. +- When painting shuffle is on, the roof of The Artistic now takes on the + appearance of the four paintings inside the room. +- Getting the "Geronimo!" bonus achievement now gives you a puzzle skip, once + per save file. + +Download: +[lingo-archipelago-v2.0.0.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v2.0.0.zip)
+Source: [v2.0.0](https://code.fourisland.com/lingo-archipelago/tag/?h=v2.0.0) + ## v1.2.1 - 2024-03-29 - Fixed the entrance to The Wanderer not opening after disconnecting from -- cgit 1.4.1 From 38175bd12c1a0a2c80be5f4011f69e4659f61ccd Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 3 Apr 2024 14:31:51 -0400 Subject: Added player position tracking --- Archipelago/client.gd | 18 +++++++++++++++++- Archipelago/player.gd | 28 ++++++++++++++++++++++++++++ Archipelago/settings_buttons.gd | 1 + Archipelago/settings_screen.gd | 1 + archipelago.tscn | 10 ++++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 47357ee..b825aaa 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -14,6 +14,7 @@ var ap_user = "" var ap_pass = "" var confusify_world = false var enable_multiplayer = false +var track_player = false const my_version = "2.0.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} @@ -158,6 +159,8 @@ func _init(): confusify_world = data[4] if data.size() > 5: enable_multiplayer = data[5] + if data.size() > 6: + track_player = data[6] processDatapackages() @@ -298,6 +301,11 @@ func _on_data(): if _slot_data.has("early_color_hallways"): _early_color_hallways = _slot_data["early_color_hallways"] + if track_player: + setValue("PlayerPos", {"x": 0, "z": 0}) + else: + setValue("PlayerPos", null) + _puzzle_skips = 0 _localdata_file = "user://archipelago_data/%s_%d" % [_seed, _slot] @@ -470,7 +478,15 @@ func saveSettings(): var file = File.new() file.open("user://settings/archipelago", File.WRITE) - var data = [ap_server, ap_user, ap_pass, _datapackages, confusify_world, enable_multiplayer] + var data = [ + ap_server, + ap_user, + ap_pass, + _datapackages, + confusify_world, + enable_multiplayer, + track_player + ] file.store_var(data, true) file.close() diff --git a/Archipelago/player.gd b/Archipelago/player.gd index 87d9d0c..49d907d 100644 --- a/Archipelago/player.gd +++ b/Archipelago/player.gd @@ -1,6 +1,34 @@ extends "res://scripts/player.gd" +var _oldpos = Vector3(0, -200, 0) + + +func _ready(): + _oldpos = translation + _oldpos.y = 0 + + var apclient = global.get_node("Archipelago") + if apclient.track_player: + var tracking_timer = Timer.new() + tracking_timer.name = "TrackingTimer" + tracking_timer.wait_time = 5.0 + add_child(tracking_timer) + tracking_timer.connect("timeout", self, "_tick_tracking") + tracking_timer.start() + + +func _tick_tracking(): + var newpos = translation + newpos.y = 0 + + if newpos != _oldpos && newpos.distance_to(_oldpos) > 10: + _oldpos = newpos + + var apclient = global.get_node("Archipelago") + apclient.setValue("PlayerPos", {"x": int(_oldpos.x), "z": int(_oldpos.z)}) + + func _solving(): ._solving() diff --git a/Archipelago/settings_buttons.gd b/Archipelago/settings_buttons.gd index e9cff9d..9193b61 100644 --- a/Archipelago/settings_buttons.gd +++ b/Archipelago/settings_buttons.gd @@ -14,6 +14,7 @@ func _connect_pressed(): apclient.ap_pass = self.get_parent().get_node("password_box").text apclient.confusify_world = self.get_parent().get_node("confusing_box").pressed apclient.enable_multiplayer = self.get_parent().get_node("multiplayer_box").pressed + apclient.track_player = self.get_parent().get_node("position_box").pressed apclient.saveSettings() apclient.connectToServer() diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index 7f50f51..deb0003 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd @@ -59,6 +59,7 @@ func _ready(): self.get_node("Panel/password_box").text = apclient.ap_pass self.get_node("Panel/confusing_box").pressed = apclient.confusify_world self.get_node("Panel/multiplayer_box").pressed = apclient.enable_multiplayer + self.get_node("Panel/position_box").pressed = apclient.track_player # Show client version. self.get_node("Panel/title").text = "ARCHIPELAGO (%s)" % apclient.my_version diff --git a/archipelago.tscn b/archipelago.tscn index 917db4e..f0b8ab9 100644 --- a/archipelago.tscn +++ b/archipelago.tscn @@ -173,5 +173,15 @@ custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) text = "Show other players" +[node name="position_box" type="CheckBox" parent="Panel"] +margin_left = 1227.0 +margin_top = 571.0 +margin_right = 1832.0 +margin_bottom = 654.0 +custom_fonts/font = ExtResource( 6 ) +custom_icons/checked = ExtResource( 8 ) +custom_icons/unchecked = ExtResource( 7 ) +text = "Send position to tracker" + [connection signal="pressed" from="Panel/connect_button" to="Panel/connect_button" method="_connect_pressed"] [connection signal="pressed" from="Panel/quit_button" to="Panel/quit_button" method="_back_pressed"] -- cgit 1.4.1 From e15780a26c207d949a78b9e83f53a81604daba35 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 3 Apr 2024 14:40:28 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index b825aaa..a3b503a 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -16,7 +16,7 @@ var confusify_world = false var enable_multiplayer = false var track_player = false -const my_version = "2.0.0" +const my_version = "2.1.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1 From ca551af38911a79907eefdf211b311fe6da23078 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 3 Apr 2024 14:52:24 -0400 Subject: Released v2.1.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c4cae8..a5ef1f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # lingo-archipelago Releases +## v2.1.0 - 2024-04-03 + +- Added a checkbox that enables tracking the player's current position. This can + be displayed on the map in the tracker. (requires v0.8.0) + +Download: +[lingo-archipelago-v2.1.0.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v2.1.0.zip)
+Source: [v2.1.0](https://code.fourisland.com/lingo-archipelago/tag/?h=v2.1.0) + ## v2.0.0 - 2024-04-01 - [Archipelago 0.4.5](https://github.com/ArchipelagoMW/Archipelago/releases/tag/0.4.5) -- cgit 1.4.1 From cd62328a657aa8deb07910267ab549aa990f8aff Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Tue, 9 Apr 2024 23:01:30 -0400 Subject: Log Steam build ID for debugging --- Archipelago/settings_screen.gd | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index deb0003..de64214 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd @@ -2,6 +2,12 @@ extends Spatial func _ready(): + # Some helpful logging. + if Steam.isSubscribed(): + global._print("Provisioning successful! Build ID: %d" % Steam.getAppBuildId()) + else: + global._print("Provisioning failed.") + # Undo the load screen removing our cursor get_tree().get_root().set_disable_input(false) Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) -- cgit 1.4.1 From 7fff1d87387be19d53c92b926e84f7d64790118f Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 11 Apr 2024 16:55:42 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index a3b503a..f15afe6 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -16,7 +16,7 @@ var confusify_world = false var enable_multiplayer = false var track_player = false -const my_version = "2.1.0" +const my_version = "2.1.1" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1 From dbc0e454596ba7e1a8378685c35e37dccd19c964 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 11 Apr 2024 17:00:26 -0400 Subject: Released v2.1.1 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5ef1f2..70cea6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # lingo-archipelago Releases +## v2.1.1 - 2024-04-11 + +- Added some debug logging. + +Download: +[lingo-archipelago-v2.1.1.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v2.1.1.zip)
+Source: [v2.1.1](https://code.fourisland.com/lingo-archipelago/tag/?h=v2.1.1) + ## v2.1.0 - 2024-04-03 - Added a checkbox that enables tracking the player's current position. This can -- cgit 1.4.1 From ce831897b89974f38fd6f0583e5feac178643a14 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 17 Apr 2024 12:30:18 -0400 Subject: Add connection history --- Archipelago/client.gd | 6 +++++- Archipelago/settings_screen.gd | 31 +++++++++++++++++++++++++++++++ archipelago.tscn | 25 +++++++++++++++++-------- 3 files changed, 53 insertions(+), 9 deletions(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index f15afe6..489fdb9 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -15,6 +15,7 @@ var ap_pass = "" var confusify_world = false var enable_multiplayer = false var track_player = false +var connection_history = [] const my_version = "2.1.1" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} @@ -161,6 +162,8 @@ func _init(): enable_multiplayer = data[5] if data.size() > 6: track_player = data[6] + if data.size() > 7: + connection_history = data[7] processDatapackages() @@ -485,7 +488,8 @@ func saveSettings(): _datapackages, confusify_world, enable_multiplayer, - track_player + track_player, + connection_history ] file.store_var(data, true) file.close() diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index de64214..453e3bf 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd @@ -67,6 +67,19 @@ func _ready(): self.get_node("Panel/multiplayer_box").pressed = apclient.enable_multiplayer self.get_node("Panel/position_box").pressed = apclient.track_player + var history_box = get_node("Panel/connection_history") + if apclient.connection_history.empty(): + history_box.disabled = true + else: + history_box.disabled = false + + var i = 0 + for details in apclient.connection_history: + history_box.get_popup().add_item("%s (%s)" % [details[1], details[0]], i) + i += 1 + + history_box.get_popup().connect("id_pressed", self, "historySelected") + # Show client version. self.get_node("Panel/title").text = "ARCHIPELAGO (%s)" % apclient.my_version @@ -109,6 +122,15 @@ func connectionStatus(message): func connectionSuccessful(): var apclient = global.get_node("Archipelago") + # Save connection details + var connection_details = [apclient.ap_server, apclient.ap_user, apclient.ap_pass] + if apclient.connection_history.has(connection_details): + apclient.connection_history.erase(connection_details) + apclient.connection_history.push_front(connection_details) + if apclient.connection_history.size() > 10: + apclient.connection_history.resize(10) + apclient.saveSettings() + # Switch to LL1 Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) global.save_file = apclient.getSaveFileName() @@ -130,3 +152,12 @@ func connectionUnsuccessful(error_message): popup.popup_exclusive = true popup.get_ok().visible = true popup.popup_centered() + + +func historySelected(index): + var apclient = global.get_node("Archipelago") + var details = apclient.connection_history[index] + + self.get_node("Panel/server_box").text = details[0] + self.get_node("Panel/player_box").text = details[1] + self.get_node("Panel/password_box").text = details[2] diff --git a/archipelago.tscn b/archipelago.tscn index f0b8ab9..f063af9 100644 --- a/archipelago.tscn +++ b/archipelago.tscn @@ -86,9 +86,9 @@ align = 2 [node name="credit5" parent="Panel" instance=ExtResource( 1 )] margin_left = 1239.0 -margin_top = 271.0 +margin_top = 422.0 margin_right = 1829.0 -margin_bottom = 335.0 +margin_bottom = 486.0 custom_fonts/font = ExtResource( 2 ) custom_styles/normal = SubResource( 1 ) text = "OPTIONS" @@ -155,9 +155,9 @@ margin_bottom = 58.0 [node name="confusing_box" type="CheckBox" parent="Panel"] margin_left = 1227.0 -margin_top = 351.0 +margin_top = 502.0 margin_right = 1832.0 -margin_bottom = 439.0 +margin_bottom = 590.0 custom_fonts/font = ExtResource( 6 ) custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) @@ -165,9 +165,9 @@ text = "Make world more confusing" [node name="multiplayer_box" type="CheckBox" parent="Panel"] margin_left = 1227.0 -margin_top = 461.0 +margin_top = 612.0 margin_right = 1832.0 -margin_bottom = 549.0 +margin_bottom = 700.0 custom_fonts/font = ExtResource( 6 ) custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) @@ -175,13 +175,22 @@ text = "Show other players" [node name="position_box" type="CheckBox" parent="Panel"] margin_left = 1227.0 -margin_top = 571.0 +margin_top = 722.0 margin_right = 1832.0 -margin_bottom = 654.0 +margin_bottom = 810.0 custom_fonts/font = ExtResource( 6 ) custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) text = "Send position to tracker" +[node name="connection_history" type="MenuButton" parent="Panel"] +margin_left = 1239.0 +margin_top = 276.0 +margin_right = 1829.0 +margin_bottom = 372.0 +custom_fonts/font = ExtResource( 6 ) +text = "connection history" +flat = false + [connection signal="pressed" from="Panel/connect_button" to="Panel/connect_button" method="_connect_pressed"] [connection signal="pressed" from="Panel/quit_button" to="Panel/quit_button" method="_back_pressed"] -- cgit 1.4.1 From 750ebbf9aa25f0209d7f1c7186718fa07377881d Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 17 Apr 2024 12:50:34 -0400 Subject: Prevent colorful cdp if genned before 0.4.5 --- Archipelago/client.gd | 16 ++++++++++++++++ Archipelago/load.gd | 23 ++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 489fdb9..2f66c1b 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -95,6 +95,7 @@ var _item_name_to_id = {} # LINGO only var _location_name_to_id = {} # LINGO only var _remote_version = {"major": 0, "minor": 0, "build": 0} +var _gen_version = {"major": 0, "minor": 0, "build": 0} # TODO: caching per MW/slot, reset between connections var _authenticated = false @@ -233,6 +234,7 @@ func _on_data(): if cmd == "RoomInfo": _seed = message["seed_name"] _remote_version = message["version"] + _gen_version = message["generator_version"] var needed_games = [] for game in message["datapackage_checksums"].keys(): @@ -779,3 +781,17 @@ func colorForItemType(flags): return "#d63a22" else: # filler return "#14de9e" + + +func compareVersion(lhs, rhs): + if lhs["major"] == rhs["major"]: + if lhs["minor"] == rhs["minor"]: + return lhs["build"] < rhs["build"] + else: + return lhs["minor"] < rhs["minor"] + else: + return lhs["major"] < rhs["major"] + + +func wasGeneratedBeforeVersion(major, minor, build): + return compareVersion(_gen_version, {"major": major, "minor": minor, "build": build}) diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 566ee39..27e70b7 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd @@ -96,18 +96,19 @@ func _load(): wanderer_achieve.translation = Vector3(-51, -33, 35) # way under the map - # Turn THE COLORFUL into a cdp. - var real_colorful = panels_parent.get_node("Countdown Panels/Panel_colorful_colorful") var cdp_auto_scene = load("res://nodes/panel_countdown_auto.tscn") - var colorful_cdp = cdp_auto_scene.instance() - colorful_cdp.name = "CountdownPanel_colorful" - colorful_cdp.replace_with = "../../Panels/Countdown Panels/Panel_colorful_colorful" - colorful_cdp.panels = "../../Panels/Doorways Room" - colorful_cdp.translation = real_colorful.translation - colorful_cdp.rotation = real_colorful.rotation - get_node("CountdownPanels").add_child(colorful_cdp) - real_colorful.translation = Vector3(-51, -35, 35) # way under the map - get_node("Doors/Doorway Room Doors/Door_gray2").queue_free() + if !apclient.wasGeneratedBeforeVersion(0, 4, 5): + # Turn THE COLORFUL into a cdp. + var real_colorful = panels_parent.get_node("Countdown Panels/Panel_colorful_colorful") + var colorful_cdp = cdp_auto_scene.instance() + colorful_cdp.name = "CountdownPanel_colorful" + colorful_cdp.replace_with = "../../Panels/Countdown Panels/Panel_colorful_colorful" + colorful_cdp.panels = "../../Panels/Doorways Room" + colorful_cdp.translation = real_colorful.translation + colorful_cdp.rotation = real_colorful.rotation + get_node("CountdownPanels").add_child(colorful_cdp) + real_colorful.translation = Vector3(-51, -35, 35) # way under the map + get_node("Doors/Doorway Room Doors/Door_gray2").queue_free() # Set up The Master to be variable. var old_master_cdp = get_node("CountdownPanels/CountdownPanel_countdown_16") -- cgit 1.4.1 From f75a3599eae42952c4360f638d727fceea07f3a9 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 17 Apr 2024 12:51:28 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 2f66c1b..8abc42c 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -17,7 +17,7 @@ var enable_multiplayer = false var track_player = false var connection_history = [] -const my_version = "2.1.1" +const my_version = "2.2.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1 From 6aad55fa66eb9caa668bb09289391e6b39eee7da Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 17 Apr 2024 13:02:05 -0400 Subject: Released v2.2.0 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70cea6d..d5fc54d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # lingo-archipelago Releases +## v2.2.0 - 2024-04-17 + +- The last ten connections are now saved in a list so that you can easily switch + between concurrent multiworlds. +- THE COLORFUL is no longer turned into a countdown panel if the multiworld was + generated before Archipelago 0.4.5. This should improve backwards + compatibility, but a v1.x.x version is still the most accurate way to play an + older multiworld. + +Download: +[lingo-archipelago-v2.2.0.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v2.2.0.zip)
+Source: [v2.2.0](https://code.fourisland.com/lingo-archipelago/tag/?h=v2.2.0) + ## v2.1.1 - 2024-04-11 - Added some debug logging. -- cgit 1.4.1