Lingo: Fix The Bearer's Pilgrimage Logic (#5005)

This commit is contained in:
Star Rauchenberger
2025-05-24 09:35:06 -04:00
committed by GitHub
parent e830a6d6f5
commit 4119763e23
7 changed files with 75 additions and 41 deletions

View File

@@ -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

Binary file not shown.

View File

@@ -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

View File

@@ -23,6 +23,7 @@ class EntranceType(Flag):
SUNWARP = auto()
WARP = auto()
CROSSROADS_ROOF_ACCESS = auto()
STATIC_PAINTING = auto()
class RoomEntrance(NamedTuple):

View File

@@ -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():

View File

@@ -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)

View File

@@ -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'