diff --git a/worlds/lingo/data/LL1.yaml b/worlds/lingo/data/LL1.yaml index 6410ffea..4c41f323 100644 --- a/worlds/lingo/data/LL1.yaml +++ b/worlds/lingo/data/LL1.yaml @@ -4956,10 +4956,16 @@ Outside The Initiated: room: Art Gallery door: Exit - The Bearer (East): True - The Bearer (North): True - The Bearer (South): True - The Bearer (West): True + The Bearer (East): + static_painting: True + The Bearer (North): + static_painting: True + The Bearer (South): + static_painting: True + The Bearer (West): + - static_painting: True + - room: The Bearer (West) + door: Side Area Shortcut Roof: True panels: Achievement: @@ -5053,7 +5059,8 @@ - MIDDLE The Bearer (East): entrances: - Cross Tower (East): True + Cross Tower (East): + static_painting: True Bearer Side Area: door: Side Area Access Roof: True @@ -5084,7 +5091,8 @@ panel: SPACE The Bearer (North): entrances: - Cross Tower (East): True + Cross Tower (North): + static_painting: True Roof: True panels: SILENT (1): @@ -5128,7 +5136,8 @@ panel: POTS The Bearer (South): entrances: - Cross Tower (North): True + Cross Tower (South): + static_painting: True Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5162,7 +5171,10 @@ panel: SILENT (1) The Bearer (West): entrances: - Cross Tower (West): True + Cross Tower (West): + static_painting: True + The Bearer: + door: Side Area Shortcut Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5235,6 +5247,7 @@ The Bearer: room: The Bearer door: East Entrance + static_painting: True Roof: True panels: WINTER: @@ -5250,6 +5263,7 @@ The Bearer (East): room: The Bearer (East) door: North Entrance + static_painting: True Roof: True panels: NORTH: @@ -5270,6 +5284,7 @@ The Bearer (North): room: The Bearer (North) door: South Entrance + static_painting: True panels: FIRE: id: Cross Room/Panel_fire_fire @@ -5284,6 +5299,7 @@ Bearer Side Area: room: Bearer Side Area door: West Entrance + static_painting: True Roof: True panels: DIAMONDS: @@ -7108,6 +7124,8 @@ entrances: Orange Tower Third Floor: warp: True + Art Gallery (First Floor): + warp: True Art Gallery (Second Floor): warp: True Art Gallery (Third Floor): @@ -7125,22 +7143,6 @@ required_door: room: Number Hunt door: Eights - EON: - id: Painting Room/Panel_eon_one - colors: yellow - tag: midyellow - TRUSTWORTHY: - id: Painting Room/Panel_to_two - colors: red - tag: midred - FREE: - id: Painting Room/Panel_free_three - colors: purple - tag: midpurp - OUR: - id: Painting Room/Panel_our_four - colors: blue - tag: midblue ORDER: id: Painting Room/Panel_order_onepathmanyturns tag: forbid @@ -7159,15 +7161,8 @@ - scenery_painting_2c skip_location: True panels: - - EON - First Floor Puzzles: - skip_item: True - location_name: Art Gallery - First Floor Puzzles - panels: - - EON - - TRUSTWORTHY - - FREE - - OUR + - room: Art Gallery (First Floor) + panel: EON Third Floor: painting_id: - scenery_painting_3b @@ -7227,11 +7222,42 @@ - Third Floor - Fourth Floor - Fifth Floor + Art Gallery (First Floor): + entrances: + Art Gallery: + static_painting: True + panels: + EON: + id: Painting Room/Panel_eon_one + colors: yellow + tag: midyellow + TRUSTWORTHY: + id: Painting Room/Panel_to_two + colors: red + tag: midred + FREE: + id: Painting Room/Panel_free_three + colors: purple + tag: midpurp + OUR: + id: Painting Room/Panel_our_four + colors: blue + tag: midblue + doors: + Puzzles: + skip_item: True + location_name: Art Gallery - First Floor Puzzles + panels: + - EON + - TRUSTWORTHY + - FREE + - OUR Art Gallery (Second Floor): entrances: Art Gallery: room: Art Gallery door: Second Floor + static_painting: True panels: HOUSE: id: Painting Room/Panel_house_neighborhood @@ -7263,6 +7289,7 @@ Art Gallery: room: Art Gallery door: Third Floor + static_painting: True panels: AN: id: Painting Room/Panel_an_many @@ -7294,6 +7321,7 @@ Art Gallery: room: Art Gallery door: Fourth Floor + static_painting: True panels: URNS: id: Painting Room/Panel_urns_turns diff --git a/worlds/lingo/data/generated.dat b/worlds/lingo/data/generated.dat index 14f5570d..f5eb3e06 100644 Binary files a/worlds/lingo/data/generated.dat and b/worlds/lingo/data/generated.dat differ diff --git a/worlds/lingo/data/ids.yaml b/worlds/lingo/data/ids.yaml index 0a43592d..c30a21e6 100644 --- a/worlds/lingo/data/ids.yaml +++ b/worlds/lingo/data/ids.yaml @@ -727,11 +727,12 @@ panels: WANDER: 444975 Art Gallery: EIGHT: 444976 + ORDER: 444981 + Art Gallery (First Floor): EON: 444977 TRUSTWORTHY: 444978 FREE: 444979 OUR: 444980 - ORDER: 444981 Art Gallery (Second Floor): HOUSE: 444982 PATH: 444983 @@ -1382,8 +1383,6 @@ doors: Art Gallery: Second Floor: item: 444558 - First Floor Puzzles: - location: 445256 Third Floor: item: 444559 Fourth Floor: @@ -1393,6 +1392,9 @@ doors: Exit: item: 444562 location: 444981 + Art Gallery (First Floor): + Puzzles: + location: 445256 Art Gallery (Second Floor): Puzzles: location: 445257 diff --git a/worlds/lingo/datatypes.py b/worlds/lingo/datatypes.py index 9521422a..961f9222 100644 --- a/worlds/lingo/datatypes.py +++ b/worlds/lingo/datatypes.py @@ -23,6 +23,7 @@ class EntranceType(Flag): SUNWARP = auto() WARP = auto() CROSSROADS_ROOF_ACCESS = auto() + STATIC_PAINTING = auto() class RoomEntrance(NamedTuple): diff --git a/worlds/lingo/regions.py b/worlds/lingo/regions.py index 9773f22d..e029513a 100644 --- a/worlds/lingo/regions.py +++ b/worlds/lingo/regions.py @@ -30,7 +30,7 @@ def is_acceptable_pilgrimage_entrance(entrance_type: EntranceType, world: "Lingo allowed_entrance_types = EntranceType.NORMAL if world.options.pilgrimage_allows_paintings: - allowed_entrance_types |= EntranceType.PAINTING + allowed_entrance_types |= EntranceType.PAINTING | EntranceType.STATIC_PAINTING if world.options.pilgrimage_allows_roof_access: allowed_entrance_types |= EntranceType.CROSSROADS_ROOF_ACCESS @@ -105,7 +105,8 @@ def create_regions(world: "LingoWorld") -> None: regions[pilgrimage_region_name] = Region(pilgrimage_region_name, world.player, world.multiworld) # Connect all created regions now that they exist. - allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS + allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS | \ + EntranceType.STATIC_PAINTING if not painting_shuffle: # Don't use the vanilla painting connections if we are shuffling paintings. @@ -156,11 +157,11 @@ def create_regions(world: "LingoWorld") -> None: regions[from_room].connect(regions[to_room], f"Pilgrimage Part {i+1}") else: connect_entrance(regions, regions["Starting Room"], regions["Pilgrim Antechamber"], "Sun Painting", - RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.PAINTING, False, world) + RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.STATIC_PAINTING, False, world) if early_color_hallways: connect_entrance(regions, regions["Starting Room"], regions["Color Hallways"], "Early Color Hallways", - None, EntranceType.PAINTING, False, world) + None, EntranceType.STATIC_PAINTING, False, world) if painting_shuffle: for warp_enter, warp_exit in world.player_logic.painting_mapping.items(): diff --git a/worlds/lingo/utils/pickle_static_data.py b/worlds/lingo/utils/pickle_static_data.py index 740e129b..7f39b798 100644 --- a/worlds/lingo/utils/pickle_static_data.py +++ b/worlds/lingo/utils/pickle_static_data.py @@ -138,6 +138,8 @@ def process_single_entrance(source_room: str, room_name: str, door_obj) -> RoomE entrance_type = EntranceType.WARP elif source_room == "Crossroads" and room_name == "Roof": entrance_type = EntranceType.CROSSROADS_ROOF_ACCESS + elif "static_painting" in door_obj and door_obj["static_painting"]: + entrance_type = EntranceType.STATIC_PAINTING if "painting" in door_obj and door_obj["painting"]: PAINTING_EXIT_ROOMS.add(room_name) diff --git a/worlds/lingo/utils/validate_config.rb b/worlds/lingo/utils/validate_config.rb index 2a765fbc..e2704226 100644 --- a/worlds/lingo/utils/validate_config.rb +++ b/worlds/lingo/utils/validate_config.rb @@ -2,7 +2,7 @@ # the file are consistent. It also checks that the panel and door IDs mentioned # all exist in the map file. # -# Usage: validate_config.rb [config file] [map file] +# Usage: validate_config.rb [config file] [ids path] [map file] require 'set' require 'yaml'