diff options
-rw-r--r-- | Archipelago/client.gd | 37 | ||||
-rw-r--r-- | Archipelago/textclient.gd | 3 | ||||
-rw-r--r-- | CHANGELOG.md | 19 |
3 files changed, 52 insertions, 7 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 350723e..01f812c 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
@@ -19,7 +19,7 @@ var enable_multiplayer = false | |||
19 | var track_player = false | 19 | var track_player = false |
20 | var connection_history = [] | 20 | var connection_history = [] |
21 | 21 | ||
22 | const my_version = "4.2.0" | 22 | const my_version = "4.2.1" |
23 | const ap_version = {"major": 0, "minor": 5, "build": 0, "class": "Version"} | 23 | const ap_version = {"major": 0, "minor": 5, "build": 0, "class": "Version"} |
24 | const color_items = [ | 24 | const color_items = [ |
25 | "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" | 25 | "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" |
@@ -121,6 +121,8 @@ var _cached_atbash = 0 | |||
121 | var _cached_speed_boosts = 0 | 121 | var _cached_speed_boosts = 0 |
122 | var _geronimo_skip = false | 122 | var _geronimo_skip = false |
123 | var _checked_paintings = [] | 123 | var _checked_paintings = [] |
124 | var _hints_key = "" | ||
125 | var _hinted_locations = [] | ||
124 | 126 | ||
125 | signal could_not_connect | 127 | signal could_not_connect |
126 | signal connect_status | 128 | signal connect_status |
@@ -403,6 +405,11 @@ func _on_data(): | |||
403 | ] | 405 | ] |
404 | ) | 406 | ) |
405 | 407 | ||
408 | _hints_key = "_read_hints_%d_%d" % [_team, _slot] | ||
409 | sendMessage( | ||
410 | [{"cmd": "SetNotify", "keys": [_hints_key]}, {"cmd": "Get", "keys": [_hints_key]}] | ||
411 | ) | ||
412 | |||
406 | emit_signal("client_connected") | 413 | emit_signal("client_connected") |
407 | 414 | ||
408 | elif cmd == "ConnectionRefused": | 415 | elif cmd == "ConnectionRefused": |
@@ -500,9 +507,12 @@ func _on_data(): | |||
500 | ) | 507 | ) |
501 | else: | 508 | else: |
502 | if message["receiving"] != _slot: | 509 | if message["receiving"] != _slot: |
503 | messages.showMessage( | 510 | var sentMsg = ( |
504 | "Sent [color=%s]%s[/color] to %s" % [item_color, item_name, player_name] | 511 | "Sent [color=%s]%s[/color] to %s" % [item_color, item_name, player_name] |
505 | ) | 512 | ) |
513 | if _hinted_locations.has(message["item"]["location"]): | ||
514 | sentMsg += " ([color=#fafad2]Hinted![/color])" | ||
515 | messages.showMessage(sentMsg) | ||
506 | 516 | ||
507 | elif cmd == "Bounced": | 517 | elif cmd == "Bounced": |
508 | if ( | 518 | if ( |
@@ -523,8 +533,15 @@ func _on_data(): | |||
523 | get_tree().get_root().get_node("Spatial/player/pause_menu")._reload() | 533 | get_tree().get_root().get_node("Spatial/player/pause_menu")._reload() |
524 | 534 | ||
525 | elif cmd == "SetReply": | 535 | elif cmd == "SetReply": |
526 | if message.has("key") and message["key"] == ("Lingo_%d_Paintings" % _slot): | 536 | if message.has("key"): |
527 | _checked_paintings = message["value"] | 537 | if message["key"] == ("Lingo_%d_Paintings" % _slot): |
538 | _checked_paintings = message["value"] | ||
539 | elif message["key"] == _hints_key: | ||
540 | parseHints(message["value"]) | ||
541 | |||
542 | elif cmd == "Retrieved": | ||
543 | if message.has("keys") and message["keys"].has(_hints_key): | ||
544 | parseHints(message["keys"][_hints_key]) | ||
528 | 545 | ||
529 | 546 | ||
530 | func _process(_delta): | 547 | func _process(_delta): |
@@ -805,13 +822,13 @@ func processItem(item, index, from, flags): | |||
805 | ) | 822 | ) |
806 | 823 | ||
807 | var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects") | 824 | var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects") |
808 | if item_name == "Slowness Trap": | 825 | if item_name == "Slowness Trap" and !_speed_boost_mode: |
809 | effects_node.trigger_slowness_trap() | 826 | effects_node.trigger_slowness_trap() |
810 | if item_name == "Iceland Trap": | 827 | if item_name == "Iceland Trap": |
811 | effects_node.trigger_iceland_trap() | 828 | effects_node.trigger_iceland_trap() |
812 | if item_name == "Atbash Trap": | 829 | if item_name == "Atbash Trap": |
813 | effects_node.trigger_atbash_trap() | 830 | effects_node.trigger_atbash_trap() |
814 | if item_name == "Speed Boost": | 831 | if item_name == "Speed Boost" and _speed_boost_mode: |
815 | effects_node.trigger_speed_boost() | 832 | effects_node.trigger_speed_boost() |
816 | if item_name == "Puzzle Skip": | 833 | if item_name == "Puzzle Skip": |
817 | _puzzle_skips += 1 | 834 | _puzzle_skips += 1 |
@@ -863,6 +880,14 @@ func checkPainting(painting_id): | |||
863 | setValue("Paintings", [painting_id], "add") | 880 | setValue("Paintings", [painting_id], "add") |
864 | 881 | ||
865 | 882 | ||
883 | func parseHints(hints): | ||
884 | _hinted_locations.clear() | ||
885 | |||
886 | for hint in hints: | ||
887 | if hint["finding_player"] == int(_slot): | ||
888 | _hinted_locations.append(hint["location"]) | ||
889 | |||
890 | |||
866 | func colorForItemType(flags): | 891 | func colorForItemType(flags): |
867 | var int_flags = int(flags) | 892 | var int_flags = int(flags) |
868 | if int_flags & 1: # progression | 893 | if int_flags & 1: # progression |
diff --git a/Archipelago/textclient.gd b/Archipelago/textclient.gd index f100776..3abd9e0 100644 --- a/Archipelago/textclient.gd +++ b/Archipelago/textclient.gd | |||
@@ -25,6 +25,7 @@ func _ready(): | |||
25 | label.margin_top = 80 | 25 | label.margin_top = 80 |
26 | label.margin_bottom = 720 | 26 | label.margin_bottom = 720 |
27 | label.scroll_following = true | 27 | label.scroll_following = true |
28 | label.selection_enabled = true | ||
28 | panel.add_child(label) | 29 | panel.add_child(label) |
29 | 30 | ||
30 | var dynamic_font = DynamicFont.new() | 31 | var dynamic_font = DynamicFont.new() |
@@ -51,7 +52,7 @@ func _ready(): | |||
51 | 52 | ||
52 | func _input(event): | 53 | func _input(event): |
53 | if event is InputEventKey and event.pressed: | 54 | if event is InputEventKey and event.pressed: |
54 | if event.scancode == KEY_TAB: | 55 | if event.scancode == KEY_TAB and !Input.is_key_pressed(KEY_SHIFT): |
55 | if !get_tree().paused: | 56 | if !get_tree().paused: |
56 | is_open = true | 57 | is_open = true |
57 | get_tree().paused = true | 58 | get_tree().paused = true |
diff --git a/CHANGELOG.md b/CHANGELOG.md index d00999c..6bea522 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md | |||
@@ -1,5 +1,24 @@ | |||
1 | # lingo-archipelago Releases | 1 | # lingo-archipelago Releases |
2 | 2 | ||
3 | ## v4.2.1 - 2024-09-21 | ||
4 | |||
5 | - The text client will no longer open if SHIFT is being held, to prevent | ||
6 | conflicts with the Steam Overlay. | ||
7 | |||
8 | Download: | ||
9 | [lingo-archipelago-v4.2.1.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v4.2.1.zip)<br/> | ||
10 | Source: [v4.2.1](https://code.fourisland.com/lingo-archipelago/tag/?h=v4.2.1) | ||
11 | |||
12 | ## v4.2.0 - 2024-09-20 | ||
13 | |||
14 | - Added a proximity chat feature. You can use the command "/say" followed by a | ||
15 | message in the text client, and it will broadcast the message only to other | ||
16 | nearby Lingo players. | ||
17 | |||
18 | Download: | ||
19 | [lingo-archipelago-v4.2.0.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v4.2.0.zip)<br/> | ||
20 | Source: [v4.2.0](https://code.fourisland.com/lingo-archipelago/tag/?h=v4.2.0) | ||
21 | |||
3 | ## v4.1.0 - 2024-09-02 | 22 | ## v4.1.0 - 2024-09-02 |
4 | 23 | ||
5 | - Added an in-game text client, which can be used to talk to other players and | 24 | - Added an in-game text client, which can be used to talk to other players and |