diff options
Diffstat (limited to 'Archipelago/load.gd')
| -rw-r--r-- | Archipelago/load.gd | 41 |
1 files changed, 36 insertions, 5 deletions
| diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 0750247..673c762 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
| @@ -14,7 +14,8 @@ const EXCLUDED_PAINTINGS = [ | |||
| 14 | "scenery_3.tscn", | 14 | "scenery_3.tscn", |
| 15 | "scenery_4.tscn", | 15 | "scenery_4.tscn", |
| 16 | "scenery_5.tscn", | 16 | "scenery_5.tscn", |
| 17 | "pilgrim.tscn" | 17 | "pilgrim.tscn", |
| 18 | "so_pearl_bk.tscn" | ||
| 18 | ] | 19 | ] |
| 19 | 20 | ||
| 20 | 21 | ||
| @@ -24,6 +25,15 @@ func _load(): | |||
| 24 | var apclient = global.get_node("Archipelago") | 25 | var apclient = global.get_node("Archipelago") |
| 25 | var panels_parent = self.get_node("Panels") | 26 | var panels_parent = self.get_node("Panels") |
| 26 | 27 | ||
| 28 | # Add a wall-blocked raycast to the player. | ||
| 29 | var wallcast = RayCast.new() | ||
| 30 | wallcast.name = "wallcast" | ||
| 31 | wallcast.cast_to = Vector3(0, 0, -15) | ||
| 32 | wallcast.set_collision_mask_bit(1, true) | ||
| 33 | wallcast.set_collision_mask_bit(3, true) | ||
| 34 | wallcast.collide_with_areas = true | ||
| 35 | $player/pivot/camera.add_child(wallcast) | ||
| 36 | |||
| 27 | # Override the YOU panel with the AP slot name. | 37 | # Override the YOU panel with the AP slot name. |
| 28 | if self.get_node_or_null("Panels/Color Arrow Room/Panel_you") != null: | 38 | if self.get_node_or_null("Panels/Color Arrow Room/Panel_you") != null: |
| 29 | self.get_node("Panels/Color Arrow Room/Panel_you").answer = apclient.ap_user | 39 | self.get_node("Panels/Color Arrow Room/Panel_you").answer = apclient.ap_user |
| @@ -198,6 +208,10 @@ func _load(): | |||
| 198 | set_gridmap_tile(-88.5, 4.5, -41.5, "MeshInstance8") | 208 | set_gridmap_tile(-88.5, 4.5, -41.5, "MeshInstance8") |
| 199 | set_gridmap_tile(-89.5, 4.5, -41.5, "MeshInstance4") | 209 | set_gridmap_tile(-89.5, 4.5, -41.5, "MeshInstance4") |
| 200 | 210 | ||
| 211 | # Remove black block from THE RED. | ||
| 212 | clear_gridmap_tile(68.5, 6.5, 76.5) | ||
| 213 | get_node("Decorations/PanelSign/sign19").queue_free() | ||
| 214 | |||
| 201 | if apclient.confusify_world: | 215 | if apclient.confusify_world: |
| 202 | # Remove welcome back / color hallway / sunwarp indicators. | 216 | # Remove welcome back / color hallway / sunwarp indicators. |
| 203 | get_node("Decorations/Signs/Welcome Back Signs").queue_free() | 217 | get_node("Decorations/Signs/Welcome Back Signs").queue_free() |
| @@ -245,12 +259,12 @@ func _load(): | |||
| 245 | 259 | ||
| 246 | if apclient._panel_shuffle != apclient.kNO_PANEL_SHUFFLE: | 260 | if apclient._panel_shuffle != apclient.kNO_PANEL_SHUFFLE: |
| 247 | # Make The Wondrous's FIRE solely midred. | 261 | # Make The Wondrous's FIRE solely midred. |
| 248 | set_gridmap_tile(-76.5, 1.5, -73.5, "MeshInstance18") | 262 | clear_gridmap_tile(-76.5, 1.5, -73.5) |
| 249 | 263 | ||
| 250 | # Reduce double/triple length puzzles in Knight/Night. | 264 | # Reduce double/triple length puzzles in Knight/Night. |
| 251 | set_gridmap_tile(24.5, 1.5, 11.5, "MeshInstance18") | 265 | clear_gridmap_tile(24.5, 1.5, 11.5) |
| 252 | set_gridmap_tile(25.5, 1.5, 11.5, "MeshInstance18") | 266 | clear_gridmap_tile(25.5, 1.5, 11.5) |
| 253 | set_gridmap_tile(47.5, 1.5, 11.5, "MeshInstance18") | 267 | clear_gridmap_tile(47.5, 1.5, 11.5) |
| 254 | 268 | ||
| 255 | if apclient._panel_shuffle == apclient.kREARRANGE_PANELS: | 269 | if apclient._panel_shuffle == apclient.kREARRANGE_PANELS: |
| 256 | # Do the actual shuffling. | 270 | # Do the actual shuffling. |
| @@ -638,6 +652,15 @@ func _load(): | |||
| 638 | global._print("Hooked Load End") | 652 | global._print("Hooked Load End") |
| 639 | ._load() | 653 | ._load() |
| 640 | 654 | ||
| 655 | # Activate any cached traps. | ||
| 656 | if apclient._cached_slowness > 0: | ||
| 657 | effects.trigger_slowness_trap(apclient._cached_slowness) | ||
| 658 | if apclient._cached_iceland > 0: | ||
| 659 | effects.trigger_iceland_trap(apclient._cached_iceland) | ||
| 660 | if apclient._cached_atbash > 0: | ||
| 661 | for _i in range(0, apclient._cached_atbash): | ||
| 662 | effects.trigger_atbash_trap() | ||
| 663 | |||
| 641 | # Process any items received while the map was loading, and send the checks | 664 | # Process any items received while the map was loading, and send the checks |
| 642 | # from the save load. | 665 | # from the save load. |
| 643 | apclient.mapFinishedLoading() | 666 | apclient.mapFinishedLoading() |
| @@ -708,6 +731,14 @@ func set_gridmap_tile(x, y, z, tile): | |||
| 708 | gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, mesh_library.find_item_by_name(tile)) | 731 | gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, mesh_library.find_item_by_name(tile)) |
| 709 | 732 | ||
| 710 | 733 | ||
| 734 | func clear_gridmap_tile(x, y, z): | ||
| 735 | var gridmap = self.get_node("GridMap") | ||
| 736 | var mesh_library = gridmap.mesh_library | ||
| 737 | var mapvec = gridmap.world_to_map(gridmap.to_local(Vector3(x, y, z))) | ||
| 738 | |||
| 739 | gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, GridMap.INVALID_CELL_ITEM) | ||
| 740 | |||
| 741 | |||
| 711 | func set_small_gridmap_tile(x, y, z, tile): | 742 | func set_small_gridmap_tile(x, y, z, tile): |
| 712 | var gridmap = self.get_node("GridMapSmall") | 743 | var gridmap = self.get_node("GridMapSmall") |
| 713 | var mesh_library = gridmap.mesh_library | 744 | var mesh_library = gridmap.mesh_library |
