From 55e420736009afd82afa2c830921e10c67b42445 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 17 May 2025 13:15:19 -0400 Subject: Stopgap fix for Bearer paintings in pilgrimage AP 0.6.1 and earlier logically expects you to use The Bearer's paintings during pilgrimage even if paintings in pilgrimage are disabled. This changes those paintings so that they do work in this case, but only for multiworlds generated in 0.6.1 and earlier. --- Archipelago/extradata.gd | 15 +++++++++++++++ Archipelago/painting.gd | 32 ++++++++++++++++++++++++-------- 2 files changed, 39 insertions(+), 8 deletions(-) (limited to 'Archipelago') diff --git a/Archipelago/extradata.gd b/Archipelago/extradata.gd index 2e26eb2..c90433a 100644 --- a/Archipelago/extradata.gd +++ b/Archipelago/extradata.gd @@ -177,3 +177,18 @@ var panels_mode_051_door_fixes = { "Door_nine_hider_2" ] } + +var pilgrimage_061_painting_fixes = [ + "outside2", + "outside_2", + "outside_3", + "outside_4", + "north2", + "south2", + "west2", + "east_enter", + "owl_painting_4", + "garden_painting", + "yinyang_painting", + "fruitbowl_painting2" +] diff --git a/Archipelago/painting.gd b/Archipelago/painting.gd index adc8337..dc791ce 100644 --- a/Archipelago/painting.gd +++ b/Archipelago/painting.gd @@ -1,10 +1,26 @@ extends "res://scripts/painting.gd" -func _looked_at(var body, var painting): - ._looked_at(body, painting) - - if body.is_in_group("player") && (painting.get_name() == self.get_name()): - var apclient = global.get_node("Archipelago") - if !apclient._pilgrimage_allows_paintings: - global.sunwarp = 1 - body.get_node("pivot/camera/sunwarp_background").visible = false +var breaks_pilgrimage = false + + +func _ready(): + var apclient = global.get_node("Archipelago") + if !apclient._pilgrimage_allows_paintings: + if apclient.wasGeneratedBeforeVersion(0, 6, 2): + var extradata = apclient.get_node("Extradata") + if not extradata.pilgrimage_061_painting_fixes.has(get_name()): + breaks_pilgrimage = true + else: + breaks_pilgrimage = true + + +func _looked_at(body, painting): + ._looked_at(body, painting) + + if ( + breaks_pilgrimage + and body.is_in_group("player") + and (painting.get_name() == self.get_name()) + ): + global.sunwarp = 1 + body.get_node("pivot/camera/sunwarp_background").visible = false -- cgit 1.4.1