diff options
-rw-r--r-- | Archipelago/client.gd | 60 | ||||
-rw-r--r-- | Archipelago/load.gd | 27 | ||||
-rw-r--r-- | Archipelago/painting_scenery.gd | 11 | ||||
-rw-r--r-- | Archipelago/settings_screen.gd | 1 |
4 files changed, 84 insertions, 15 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 46b9ff0..be65eb2 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
@@ -6,10 +6,35 @@ var ap_pass = "" | |||
6 | 6 | ||
7 | const my_version = "0.2.3" | 7 | const my_version = "0.2.3" |
8 | const ap_version = {"major": 0, "minor": 4, "build": 0, "class": "Version"} | 8 | const ap_version = {"major": 0, "minor": 4, "build": 0, "class": "Version"} |
9 | const orange_tower = ["Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh"] | ||
10 | const color_items = [ | 9 | const color_items = [ |
11 | "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" | 10 | "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" |
12 | ] | 11 | ] |
12 | const progressive_items = { | ||
13 | "Progressive Orange Tower": | ||
14 | [ | ||
15 | {"item": "Orange Tower - Second Floor", "display": "Second Floor"}, | ||
16 | {"item": "Orange Tower - Third Floor", "display": "Third Floor"}, | ||
17 | {"item": "Orange Tower - Fourth Floor", "display": "Fourth Floor"}, | ||
18 | {"item": "Orange Tower - Fifth Floor", "display": "Fifth Floor"}, | ||
19 | {"item": "Orange Tower - Sixth Floor", "display": "Sixth Floor"}, | ||
20 | {"item": "Orange Tower - Seventh Floor", "display": "Seventh Floor"}, | ||
21 | ], | ||
22 | "Progressive Art Gallery": | ||
23 | [ | ||
24 | {"item": "Art Gallery - Second Floor", "display": "Second Floor"}, | ||
25 | {"item": "Art Gallery - Third Floor", "display": "Third Floor"}, | ||
26 | {"item": "Art Gallery - Fourth Floor", "display": "Fourth Floor"}, | ||
27 | {"item": "Art Gallery - Fifth Floor", "display": "Fifth Floor"}, | ||
28 | {"item": "Art Gallery - Exit", "display": "Exit"}, | ||
29 | ], | ||
30 | "Progressive Hallway Room": | ||
31 | [ | ||
32 | {"item": "Outside The Agreeable - Hallway Door", "display": "First Door"}, | ||
33 | {"item": "Hallway Room (2) - Exit", "display": "Second Door"}, | ||
34 | {"item": "Hallway Room (3) - Exit", "display": "Third Door"}, | ||
35 | {"item": "Hallway Room (4) - Exit", "display": "Fourth Door"}, | ||
36 | ] | ||
37 | } | ||
13 | 38 | ||
14 | const kTHE_END = 0 | 39 | const kTHE_END = 0 |
15 | const kTHE_MASTER = 1 | 40 | const kTHE_MASTER = 1 |
@@ -61,7 +86,7 @@ var _map_loaded = false | |||
61 | var _held_items = [] | 86 | var _held_items = [] |
62 | var _held_locations = [] | 87 | var _held_locations = [] |
63 | var _last_new_item = -1 | 88 | var _last_new_item = -1 |
64 | var _tower_floors = 0 | 89 | var _progressive_progress = {} |
65 | var _has_colors = ["white"] | 90 | var _has_colors = ["white"] |
66 | 91 | ||
67 | signal could_not_connect | 92 | signal could_not_connect |
@@ -287,7 +312,7 @@ func _on_data(): | |||
287 | if message["index"] == 0: | 312 | if message["index"] == 0: |
288 | # We are being sent all of our items, so lets reset any progress | 313 | # We are being sent all of our items, so lets reset any progress |
289 | # on progressive items. | 314 | # on progressive items. |
290 | _tower_floors = 0 | 315 | _progressive_progress.clear() |
291 | _held_items = [] | 316 | _held_items = [] |
292 | 317 | ||
293 | var i = 0 | 318 | var i = 0 |
@@ -526,12 +551,20 @@ func processItem(item, index, from, flags): | |||
526 | if painting_node != null: | 551 | if painting_node != null: |
527 | painting_node.get_node("Script").movePainting() | 552 | painting_node.get_node("Script").movePainting() |
528 | 553 | ||
529 | # Handle progressively opening up the tower. | 554 | # Handle progressive items. |
530 | if _item_name_to_id["Progressive Orange Tower"] == item and _tower_floors < orange_tower.size(): | 555 | var item_name = "Unknown" |
531 | var subitem_name = "Orange Tower - %s Floor" % orange_tower[_tower_floors] | 556 | if _item_id_to_name.has(item): |
532 | global._print(subitem_name) | 557 | item_name = _item_id_to_name[item] |
533 | processItem(_item_name_to_id[subitem_name], null, null, null) | 558 | |
534 | _tower_floors += 1 | 559 | if item_name in progressive_items.keys(): |
560 | if not item_name in _progressive_progress: | ||
561 | _progressive_progress[item_name] = 0 | ||
562 | |||
563 | if _progressive_progress[item_name] < progressive_items[item_name].size(): | ||
564 | var subitem_name = progressive_items[item_name][_progressive_progress[item_name]]["item"] | ||
565 | global._print(subitem_name) | ||
566 | processItem(_item_name_to_id[subitem_name], null, null, null) | ||
567 | _progressive_progress[item_name] += 1 | ||
535 | 568 | ||
536 | if _color_shuffle and color_items.has(_item_id_to_name[item]): | 569 | if _color_shuffle and color_items.has(_item_id_to_name[item]): |
537 | var lcol = _item_id_to_name[item].to_lower() | 570 | var lcol = _item_id_to_name[item].to_lower() |
@@ -544,12 +577,9 @@ func processItem(item, index, from, flags): | |||
544 | _last_new_item = index | 577 | _last_new_item = index |
545 | saveLocaldata() | 578 | saveLocaldata() |
546 | 579 | ||
547 | var item_name = "Unknown" | 580 | if item_name in progressive_items: |
548 | if _item_id_to_name.has(item): | 581 | var subitem = progressive_items[item_name][_progressive_progress[item_name] - 1] |
549 | item_name = _item_id_to_name[item] | 582 | item_name += " (%s)" % subitem["display"] |
550 | |||
551 | if item_name == "Progressive Orange Tower": | ||
552 | item_name = "Progressive Orange Tower (%s Floor)" % orange_tower[_tower_floors - 1] | ||
553 | 583 | ||
554 | var player_name = "Unknown" | 584 | var player_name = "Unknown" |
555 | if _player_name_by_slot.has(from): | 585 | if _player_name_by_slot.has(from): |
diff --git a/Archipelago/load.gd b/Archipelago/load.gd index e3ae24e..76015e9 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
@@ -175,6 +175,33 @@ func _load(): | |||
175 | var chosen_painting = remaining[rng.randi_range(0, remaining.size() - 1)] | 175 | var chosen_painting = remaining[rng.randi_range(0, remaining.size() - 1)] |
176 | instantiate_painting(painting, chosen_painting) | 176 | instantiate_painting(painting, chosen_painting) |
177 | 177 | ||
178 | # If door shuffle is on, we need to make some changes to the Art Gallery. | ||
179 | # The player should always have access to the backroom, but they shouldn't | ||
180 | # have access to ORDER until getting the fifth floor, so will move the | ||
181 | # backroom door. Also, the paintings in the backroom should only show up as | ||
182 | # the player gets the progressive art gallery items. | ||
183 | if apclient._door_shuffle: | ||
184 | var backroom_door = get_node("Doors/Tower Room Area Doors/Door_painting_backroom") | ||
185 | backroom_door.translation.x = 97 | ||
186 | backroom_door.translation.y = 0 | ||
187 | backroom_door.translation.z = 39 | ||
188 | backroom_door.scale.x = 2 | ||
189 | backroom_door.scale.y = 2.5 | ||
190 | backroom_door.scale.z = 1 | ||
191 | |||
192 | for i in range(2, 6): | ||
193 | var painting_path = "Decorations/Paintings/scenery_painting_%db" % i | ||
194 | var painting_node = get_node(painting_path) | ||
195 | var rotate = painting_node.rotate | ||
196 | var target = painting_node.target | ||
197 | painting_node.set_script(load("res://scripts/painting_eye.gd")) | ||
198 | painting_node.rotate = rotate | ||
199 | painting_node.target = target | ||
200 | painting_node.move_to_x = painting_node.translation.x | ||
201 | painting_node.move_to_z = painting_node.translation.z | ||
202 | painting_node.translation.x = 88 | ||
203 | painting_node.translation.z = 39 | ||
204 | |||
178 | # Attach a script to every panel so that we can do things like conditionally | 205 | # Attach a script to every panel so that we can do things like conditionally |
179 | # disable them. | 206 | # disable them. |
180 | var panel_script = ResourceLoader.load("user://maps/Archipelago/panel.gd") | 207 | var panel_script = ResourceLoader.load("user://maps/Archipelago/panel.gd") |
diff --git a/Archipelago/painting_scenery.gd b/Archipelago/painting_scenery.gd new file mode 100644 index 0000000..f49d602 --- /dev/null +++ b/Archipelago/painting_scenery.gd | |||
@@ -0,0 +1,11 @@ | |||
1 | extends "res://scripts/painting_scenery.gd" | ||
2 | |||
3 | |||
4 | func _answer_correct(): | ||
5 | var apclient = global.get_node("Archipelago") | ||
6 | if not apclient._door_shuffle or apclient.paintingIsVanilla(self.name): | ||
7 | ._answer_correct() | ||
8 | |||
9 | |||
10 | func movePainting(): | ||
11 | ._answer_correct() | ||
diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index e8f88e7..890afaa 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd | |||
@@ -22,6 +22,7 @@ func _ready(): | |||
22 | installScriptExtension("user://maps/Archipelago/doorControl.gd") | 22 | installScriptExtension("user://maps/Archipelago/doorControl.gd") |
23 | installScriptExtension("user://maps/Archipelago/load.gd") | 23 | installScriptExtension("user://maps/Archipelago/load.gd") |
24 | installScriptExtension("user://maps/Archipelago/painting_eye.gd") | 24 | installScriptExtension("user://maps/Archipelago/painting_eye.gd") |
25 | installScriptExtension("user://maps/Archipelago/painting_scenery.gd") | ||
25 | installScriptExtension("user://maps/Archipelago/panelLevelSwitch.gd") | 26 | installScriptExtension("user://maps/Archipelago/panelLevelSwitch.gd") |
26 | installScriptExtension("user://maps/Archipelago/panelEnd.gd") | 27 | installScriptExtension("user://maps/Archipelago/panelEnd.gd") |
27 | installScriptExtension("user://maps/Archipelago/pause_menu.gd") | 28 | installScriptExtension("user://maps/Archipelago/pause_menu.gd") |