diff options
| -rw-r--r-- | Archipelago/client.gd | 40 | ||||
| -rw-r--r-- | Archipelago/load.gd | 3 | ||||
| -rw-r--r-- | Archipelago/player.gd | 2 | ||||
| -rw-r--r-- | CHANGELOG.md | 19 |
4 files changed, 50 insertions, 14 deletions
| diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 0625c82..19fcee1 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
| @@ -18,7 +18,7 @@ var enable_multiplayer = false | |||
| 18 | var track_player = false | 18 | var track_player = false |
| 19 | var connection_history = [] | 19 | var connection_history = [] |
| 20 | 20 | ||
| 21 | const my_version = "3.0.1" | 21 | const my_version = "3.0.3" |
| 22 | const ap_version = {"major": 0, "minor": 4, "build": 6, "class": "Version"} | 22 | const ap_version = {"major": 0, "minor": 4, "build": 6, "class": "Version"} |
| 23 | const color_items = [ | 23 | const color_items = [ |
| 24 | "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" | 24 | "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" |
| @@ -80,6 +80,7 @@ var _team = 0 | |||
| 80 | var _slot = 0 | 80 | var _slot = 0 |
| 81 | var _players = [] | 81 | var _players = [] |
| 82 | var _player_name_by_slot = {} | 82 | var _player_name_by_slot = {} |
| 83 | var _game_by_player = {} | ||
| 83 | var _checked_locations = [] | 84 | var _checked_locations = [] |
| 84 | var _slot_data = {} | 85 | var _slot_data = {} |
| 85 | var _paintings_mapping = {} | 86 | var _paintings_mapping = {} |
| @@ -133,6 +134,10 @@ func _init(): | |||
| 133 | var data = file.get_var(true) | 134 | var data = file.get_var(true) |
| 134 | file.close() | 135 | file.close() |
| 135 | 136 | ||
| 137 | if typeof(data) != TYPE_ARRAY: | ||
| 138 | global._print("AP settings file is corrupted") | ||
| 139 | data = [] | ||
| 140 | |||
| 136 | if data.size() > 0: | 141 | if data.size() > 0: |
| 137 | ap_server = data[0] | 142 | ap_server = data[0] |
| 138 | if data.size() > 1: | 143 | if data.size() > 1: |
| @@ -257,6 +262,7 @@ func _on_data(): | |||
| 257 | 262 | ||
| 258 | for player in _players: | 263 | for player in _players: |
| 259 | _player_name_by_slot[player["slot"]] = player["alias"] | 264 | _player_name_by_slot[player["slot"]] = player["alias"] |
| 265 | _game_by_player[player["slot"]] = message["slot_info"][str(player["slot"])]["game"] | ||
| 260 | 266 | ||
| 261 | _death_link = _slot_data.has("death_link") and _slot_data["death_link"] | 267 | _death_link = _slot_data.has("death_link") and _slot_data["death_link"] |
| 262 | if _death_link: | 268 | if _death_link: |
| @@ -327,6 +333,10 @@ func _on_data(): | |||
| 327 | var localdata = ap_file.get_var(true) | 333 | var localdata = ap_file.get_var(true) |
| 328 | ap_file.close() | 334 | ap_file.close() |
| 329 | 335 | ||
| 336 | if typeof(localdata) != TYPE_ARRAY: | ||
| 337 | global._print("AP localdata file is corrupted") | ||
| 338 | localdata = [] | ||
| 339 | |||
| 330 | if localdata.size() > 0: | 340 | if localdata.size() > 0: |
| 331 | _last_new_item = localdata[0] | 341 | _last_new_item = localdata[0] |
| 332 | else: | 342 | else: |
| @@ -436,12 +446,14 @@ func _on_data(): | |||
| 436 | continue | 446 | continue |
| 437 | 447 | ||
| 438 | var item_name = "Unknown" | 448 | var item_name = "Unknown" |
| 439 | if _item_id_to_name.has(message["item"]["item"]): | 449 | var item_player_game = _game_by_player[message["receiving"]] |
| 440 | item_name = _item_id_to_name[message["item"]["item"]] | 450 | if _item_id_to_name[item_player_game].has(message["item"]["item"]): |
| 451 | item_name = _item_id_to_name[item_player_game][message["item"]["item"]] | ||
| 441 | 452 | ||
| 442 | var location_name = "Unknown" | 453 | var location_name = "Unknown" |
| 443 | if _location_id_to_name.has(message["item"]["location"]): | 454 | var location_player_game = _game_by_player[message["item"]["player"]] |
| 444 | location_name = _location_id_to_name[message["item"]["location"]] | 455 | if _location_id_to_name[location_player_game].has(message["item"]["location"]): |
| 456 | location_name = _location_id_to_name[location_player_game][message["item"]["location"]] | ||
| 445 | 457 | ||
| 446 | var player_name = "Unknown" | 458 | var player_name = "Unknown" |
| 447 | if _player_name_by_slot.has(message["receiving"]): | 459 | if _player_name_by_slot.has(message["receiving"]): |
| @@ -595,12 +607,16 @@ func requestDatapackages(games): | |||
| 595 | func processDatapackages(): | 607 | func processDatapackages(): |
| 596 | _item_id_to_name = {} | 608 | _item_id_to_name = {} |
| 597 | _location_id_to_name = {} | 609 | _location_id_to_name = {} |
| 598 | for package in _datapackages.values(): | 610 | for game in _datapackages.keys(): |
| 611 | var package = _datapackages[game] | ||
| 612 | |||
| 613 | _item_id_to_name[game] = {} | ||
| 599 | for name in package["item_name_to_id"].keys(): | 614 | for name in package["item_name_to_id"].keys(): |
| 600 | _item_id_to_name[package["item_name_to_id"][name]] = name | 615 | _item_id_to_name[game][package["item_name_to_id"][name]] = name |
| 601 | 616 | ||
| 617 | _location_id_to_name[game] = {} | ||
| 602 | for name in package["location_name_to_id"].keys(): | 618 | for name in package["location_name_to_id"].keys(): |
| 603 | _location_id_to_name[package["location_name_to_id"][name]] = name | 619 | _location_id_to_name[game][package["location_name_to_id"][name]] = name |
| 604 | 620 | ||
| 605 | if _datapackages.has("Lingo"): | 621 | if _datapackages.has("Lingo"): |
| 606 | _item_name_to_id = _datapackages["Lingo"]["item_name_to_id"] | 622 | _item_name_to_id = _datapackages["Lingo"]["item_name_to_id"] |
| @@ -690,8 +706,8 @@ func processItem(item, index, from, flags): | |||
| 690 | 706 | ||
| 691 | var gamedata = $Gamedata | 707 | var gamedata = $Gamedata |
| 692 | var item_name = "Unknown" | 708 | var item_name = "Unknown" |
| 693 | if _item_id_to_name.has(item): | 709 | if _item_id_to_name["Lingo"].has(item): |
| 694 | item_name = _item_id_to_name[item] | 710 | item_name = _item_id_to_name["Lingo"][item] |
| 695 | 711 | ||
| 696 | if gamedata.door_ids_by_item_id.has(int(item)): | 712 | if gamedata.door_ids_by_item_id.has(int(item)): |
| 697 | var doorsNode = get_tree().get_root().get_node("Spatial/Doors") | 713 | var doorsNode = get_tree().get_root().get_node("Spatial/Doors") |
| @@ -729,8 +745,8 @@ func processItem(item, index, from, flags): | |||
| 729 | processItem(subitem_id, null, null, null) | 745 | processItem(subitem_id, null, null, null) |
| 730 | _progressive_progress[int(item)] += 1 | 746 | _progressive_progress[int(item)] += 1 |
| 731 | 747 | ||
| 732 | if _color_shuffle and color_items.has(_item_id_to_name[item]): | 748 | if _color_shuffle and color_items.has(_item_id_to_name["Lingo"][item]): |
| 733 | var lcol = _item_id_to_name[item].to_lower() | 749 | var lcol = _item_id_to_name["Lingo"][item].to_lower() |
| 734 | if not _has_colors.has(lcol): | 750 | if not _has_colors.has(lcol): |
| 735 | _has_colors.append(lcol) | 751 | _has_colors.append(lcol) |
| 736 | emit_signal("evaluate_solvability") | 752 | emit_signal("evaluate_solvability") |
| diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 0ed978a..abe2b03 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
| @@ -263,6 +263,9 @@ func _load(): | |||
| 263 | hidden_parent.get_node("hidden_door_58").translation.x = 48 | 263 | hidden_parent.get_node("hidden_door_58").translation.x = 48 |
| 264 | hidden_parent.get_node("hidden_door_58")._setReference("whiteBlock") | 264 | hidden_parent.get_node("hidden_door_58")._setReference("whiteBlock") |
| 265 | 265 | ||
| 266 | # Remove Fearless entrance indicator. | ||
| 267 | get_node("Decorations/Signs/Miscellaneous/Sign14").queue_free() | ||
| 268 | |||
| 266 | if apclient._panel_shuffle != apclient.kNO_PANEL_SHUFFLE: | 269 | if apclient._panel_shuffle != apclient.kNO_PANEL_SHUFFLE: |
| 267 | # Make The Wondrous's FIRE solely midred. | 270 | # Make The Wondrous's FIRE solely midred. |
| 268 | clear_gridmap_tile(-76.5, 1.5, -73.5) | 271 | clear_gridmap_tile(-76.5, 1.5, -73.5) |
| diff --git a/Archipelago/player.gd b/Archipelago/player.gd index 49d907d..52d743a 100644 --- a/Archipelago/player.gd +++ b/Archipelago/player.gd | |||
| @@ -44,8 +44,6 @@ func _solvingEnd(): | |||
| 44 | 44 | ||
| 45 | 45 | ||
| 46 | func _unhandled_input(event): | 46 | func _unhandled_input(event): |
| 47 | ._unhandled_input(event) | ||
| 48 | |||
| 49 | if event is InputEventKey: | 47 | if event is InputEventKey: |
| 50 | if event.pressed and event.scancode == KEY_P: | 48 | if event.pressed and event.scancode == KEY_P: |
| 51 | var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects") | 49 | var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects") |
| diff --git a/CHANGELOG.md b/CHANGELOG.md index de47cb0..90c8e22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md | |||
| @@ -1,5 +1,24 @@ | |||
| 1 | # lingo-archipelago Releases | 1 | # lingo-archipelago Releases |
| 2 | 2 | ||
| 3 | ## v3.0.3 - 2024-06-02 | ||
| 4 | |||
| 5 | - Fixed issue with mouse sensitivity being doubled. | ||
| 6 | |||
| 7 | Download: | ||
| 8 | [lingo-archipelago-v3.0.3.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v3.0.3.zip)<br/> | ||
| 9 | Source: [v3.0.3](https://code.fourisland.com/lingo-archipelago/tag/?h=v3.0.3) | ||
| 10 | |||
| 11 | ## v3.0.2 - 2024-05-30 | ||
| 12 | |||
| 13 | - Fixed a crash that could happen if the local data got corrupted. | ||
| 14 | - Added compatibility for | ||
| 15 | [non universally unique datapackage IDs](https://github.com/ArchipelagoMW/Archipelago/issues/3394). | ||
| 16 | - Removed the arrows pointing at The Fearless when confusify world is enabled. | ||
| 17 | |||
| 18 | Download: | ||
| 19 | [lingo-archipelago-v3.0.2.zip](https://files.fourisland.com/releases/lingo-archipelago/lingo-archipelago-v3.0.2.zip)<br/> | ||
| 20 | Source: [v3.0.2](https://code.fourisland.com/lingo-archipelago/tag/?h=v3.0.2) | ||
| 21 | |||
| 3 | ## v3.0.1 - 2024-04-22 | 22 | ## v3.0.1 - 2024-04-22 |
| 4 | 23 | ||
| 5 | - Fixed issue where Progressive Hallway Room did not work properly on worlds | 24 | - Fixed issue where Progressive Hallway Room did not work properly on worlds |
