about summary refs log tree commit diff stats
path: root/Archipelago
diff options
context:
space:
mode:
Diffstat (limited to 'Archipelago')
-rw-r--r--Archipelago/client.gd26
-rw-r--r--Archipelago/settings_screen.gd1
-rw-r--r--Archipelago/teleport.gd24
3 files changed, 51 insertions, 0 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 3541016..db79e15 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd
@@ -62,6 +62,15 @@ const progressive_items = {
62 {"item": "The Colorful - Green Door", "display": "Green"}, 62 {"item": "The Colorful - Green Door", "display": "Green"},
63 {"item": "The Colorful - Brown Door", "display": "Brown"}, 63 {"item": "The Colorful - Brown Door", "display": "Brown"},
64 {"item": "The Colorful - Gray Door", "display": "Gray"}, 64 {"item": "The Colorful - Gray Door", "display": "Gray"},
65 ],
66 "Progressive Pilgrimage":
67 [
68 {"item": "Hub Room - 1 Sunwarp", "display": "1 Sunwarp"},
69 {"item": "Orange Tower Fourth Floor - 2 Sunwarp", "display": "2 Sunwarp"},
70 {"item": "Orange Tower Third Floor - 3 Sunwarp", "display": "3 Sunwarp"},
71 {"item": "Orange Tower First Floor - 4 Sunwarp", "display": "4 Sunwarp"},
72 {"item": "Orange Tower Fourth Floor - 5 Sunwarp", "display": "5 Sunwarp"},
73 {"item": "Outside The Agreeable - 6 Sunwarp", "display": "6 Sunwarp"},
65 ] 74 ]
66} 75}
67 76
@@ -80,6 +89,11 @@ const kCLASSIFICATION_REMOTE_NORMAL = 0
80const kCLASSIFICATION_REMOTE_REDUCED = 1 89const kCLASSIFICATION_REMOTE_REDUCED = 1
81const kCLASSIFICATION_REMOTE_INSANITY = 2 90const kCLASSIFICATION_REMOTE_INSANITY = 2
82 91
92const kSUNWARP_ACCESS_NORMAL = 0
93const kSUNWARP_ACCESS_DISABLED = 1
94const kSUNWARP_ACCESS_UNLOCK = 2
95const kSUNWARP_ACCESS_PROGRESSIVE = 3
96
83var _client = WebSocketClient.new() 97var _client = WebSocketClient.new()
84var _should_process = false 98var _should_process = false
85var _initiated_disconnect = false 99var _initiated_disconnect = false
@@ -111,6 +125,7 @@ var _door_shuffle = false
111var _color_shuffle = false 125var _color_shuffle = false
112var _panel_shuffle = 0 # none, rearrange 126var _panel_shuffle = 0 # none, rearrange
113var _painting_shuffle = false 127var _painting_shuffle = false
128var _sunwarp_access = 0 # normal, disabled, unlock, progressive
114var _mastery_achievements = 21 129var _mastery_achievements = 21
115var _level_2_requirement = 223 130var _level_2_requirement = 223
116var _location_classification_bit = 0 131var _location_classification_bit = 0
@@ -276,6 +291,8 @@ func _on_data():
276 _painting_shuffle = _slot_data["shuffle_paintings"] 291 _painting_shuffle = _slot_data["shuffle_paintings"]
277 if _slot_data.has("shuffle_panels"): 292 if _slot_data.has("shuffle_panels"):
278 _panel_shuffle = _slot_data["shuffle_panels"] 293 _panel_shuffle = _slot_data["shuffle_panels"]
294 if _slot_data.has("sunwarp_access"):
295 _sunwarp_access = _slot_data["sunwarp_access"]
279 if _slot_data.has("seed"): 296 if _slot_data.has("seed"):
280 _slot_seed = _slot_data["seed"] 297 _slot_seed = _slot_data["seed"]
281 if _slot_data.has("painting_entrance_to_exit"): 298 if _slot_data.has("painting_entrance_to_exit"):
@@ -632,6 +649,11 @@ func processItem(item, index, from, flags):
632 painting_node = fake_parent_node.get_node_or_null(painting_id) 649 painting_node = fake_parent_node.get_node_or_null(painting_id)
633 if painting_node != null: 650 if painting_node != null:
634 painting_node.get_node("Script").movePainting() 651 painting_node.get_node("Script").movePainting()
652
653 if gamedata.warp_ids_by_item_id.has(int(item)):
654 var warpsNode = get_tree().get_root().get_node("Spatial/Warps")
655 for warp_id in gamedata.warp_ids_by_item_id[int(item)]:
656 warpsNode.get_node(warp_id).unlock_warp()
635 657
636 # Handle progressive items. 658 # Handle progressive items.
637 if item_name in progressive_items.keys(): 659 if item_name in progressive_items.keys():
@@ -693,6 +715,10 @@ func paintingIsVanilla(painting):
693 return !$Gamedata.mentioned_paintings.has(painting) 715 return !$Gamedata.mentioned_paintings.has(painting)
694 716
695 717
718func warpIsVanilla(warp):
719 return !$Gamedata.mentioned_warps.has(warp)
720
721
696func evaluateSolvability(): 722func evaluateSolvability():
697 emit_signal("evaluate_solvability") 723 emit_signal("evaluate_solvability")
698 724
diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index 2cabe09..0ae218e 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd
@@ -46,6 +46,7 @@ func _ready():
46 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/panelInput.gd")) 46 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/panelInput.gd"))
47 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/pause_menu.gd")) 47 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/pause_menu.gd"))
48 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd")) 48 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/player.gd"))
49 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/teleport.gd"))
49 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/worldTransporter.gd")) 50 installScriptExtension(ResourceLoader.load("user://maps/Archipelago/worldTransporter.gd"))
50 51
51 var apclient = global.get_node("Archipelago") 52 var apclient = global.get_node("Archipelago")
diff --git a/Archipelago/teleport.gd b/Archipelago/teleport.gd new file mode 100644 index 0000000..d322722 --- /dev/null +++ b/Archipelago/teleport.gd
@@ -0,0 +1,24 @@
1extends "res://scripts/teleport.gd"
2
3var _unlocked = true
4
5
6func _ready():
7 var apclient = global.get_node("Archipelago")
8 if apclient._door_shuffle and !apclient.warpIsVanilla(self.get_parent().name + "/" + self.name):
9 if self.get_parent().name == "Teleporter Warps":
10 if apclient._sunwarp_access != apclient.kSUNWARP_ACCESS_NORMAL:
11 _unlocked = false
12 else:
13 _unlocked = false
14
15 ._ready()
16
17
18func _body_entered(var body):
19 if _unlocked:
20 ._body_entered(body)
21
22
23func unlock_warp():
24 _unlocked = true