about summary refs log tree commit diff stats
path: root/client/Archipelago/manager.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/Archipelago/manager.gd')
-rw-r--r--client/Archipelago/manager.gd20
1 files changed, 19 insertions, 1 deletions
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index cd0654f..8a15728 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd
@@ -1,6 +1,6 @@
1extends Node 1extends Node
2 2
3const my_version = "0.1.0" 3const MOD_VERSION = 2
4 4
5var SCRIPT_client 5var SCRIPT_client
6var SCRIPT_keyboard 6var SCRIPT_keyboard
@@ -41,12 +41,15 @@ const kCYAN_DOOR_BEHAVIOR_H2 = 0
41const kCYAN_DOOR_BEHAVIOR_DOUBLE_LETTER = 1 41const kCYAN_DOOR_BEHAVIOR_DOUBLE_LETTER = 1
42const kCYAN_DOOR_BEHAVIOR_ITEM = 2 42const kCYAN_DOOR_BEHAVIOR_ITEM = 2
43 43
44var apworld_version = [0, 0]
44var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2 45var cyan_door_behavior = kCYAN_DOOR_BEHAVIOR_H2
45var daedalus_roof_access = false 46var daedalus_roof_access = false
46var keyholder_sanity = false 47var keyholder_sanity = false
47var shuffle_control_center_colors = false 48var shuffle_control_center_colors = false
48var shuffle_doors = false 49var shuffle_doors = false
50var shuffle_gallery_paintings = false
49var shuffle_letters = kSHUFFLE_LETTERS_VANILLA 51var shuffle_letters = kSHUFFLE_LETTERS_VANILLA
52var shuffle_symbols = false
50var victory_condition = -1 53var victory_condition = -1
51 54
52signal could_not_connect 55signal could_not_connect
@@ -183,6 +186,11 @@ func _process_item(item, index, from, flags, amount):
183 if not letter.has_level2() or not letter.get_level2(): 186 if not letter.has_level2() or not letter.get_level2():
184 _process_key_item(letter.get_key(), amount) 187 _process_key_item(letter.get_key(), amount)
185 188
189 if gamedata.symbol_item_ids.has(item):
190 var player = get_tree().get_root().get_node_or_null("scene/player")
191 if player != null:
192 player.emit_signal("evaluate_solvability")
193
186 # Show a message about the item if it's new. 194 # Show a message about the item if it's new.
187 if index != null and index > _last_new_item: 195 if index != null and index > _last_new_item:
188 _last_new_item = index 196 _last_new_item = index
@@ -355,9 +363,14 @@ func _client_connected(slot_data):
355 keyholder_sanity = bool(slot_data.get("keyholder_sanity", false)) 363 keyholder_sanity = bool(slot_data.get("keyholder_sanity", false))
356 shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false)) 364 shuffle_control_center_colors = bool(slot_data.get("shuffle_control_center_colors", false))
357 shuffle_doors = bool(slot_data.get("shuffle_doors", false)) 365 shuffle_doors = bool(slot_data.get("shuffle_doors", false))
366 shuffle_gallery_paintings = bool(slot_data.get("shuffle_gallery_paintings", false))
358 shuffle_letters = int(slot_data.get("shuffle_letters", 0)) 367 shuffle_letters = int(slot_data.get("shuffle_letters", 0))
368 shuffle_symbols = bool(slot_data.get("shuffle_symbols", false))
359 victory_condition = int(slot_data.get("victory_condition", 0)) 369 victory_condition = int(slot_data.get("victory_condition", 0))
360 370
371 if slot_data.has("version"):
372 apworld_version = [int(slot_data["version"][0]), int(slot_data["version"][1])]
373
361 # Set up item locks. 374 # Set up item locks.
362 _item_locks = {} 375 _item_locks = {}
363 376
@@ -392,6 +405,11 @@ func _client_connected(slot_data):
392 for door in door_group.get_doors(): 405 for door in door_group.get_doors():
393 _item_locks[door] = [door_group.get_ap_id(), 1] 406 _item_locks[door] = [door_group.get_ap_id(), 1]
394 407
408 if shuffle_gallery_paintings:
409 for door in gamedata.objects.get_doors():
410 if door.get_type() == gamedata.SCRIPT_proto.DoorType.GALLERY_PAINTING:
411 _item_locks[door.get_id()] = [door.get_ap_id(), 1]
412
395 if cyan_door_behavior == kCYAN_DOOR_BEHAVIOR_ITEM: 413 if cyan_door_behavior == kCYAN_DOOR_BEHAVIOR_ITEM:
396 for door_group in gamedata.objects.get_door_groups(): 414 for door_group in gamedata.objects.get_door_groups():
397 if door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.CYAN_DOORS: 415 if door_group.get_type() == gamedata.SCRIPT_proto.DoorGroupType.CYAN_DOORS: