Lingo: Make The Colorful optionally progressive (#2711)

This commit is contained in:
Star Rauchenberger 2024-01-16 07:11:20 -05:00 committed by GitHub
parent adad7b532d
commit c6896c6af9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 1 deletions

View File

@ -2670,6 +2670,28 @@
paintings: paintings:
- id: arrows_painting_12 - id: arrows_painting_12
orientation: north orientation: north
progression:
Progressive Colorful:
- room: The Colorful (White)
door: Progress Door
- room: The Colorful (Black)
door: Progress Door
- room: The Colorful (Red)
door: Progress Door
- room: The Colorful (Yellow)
door: Progress Door
- room: The Colorful (Blue)
door: Progress Door
- room: The Colorful (Purple)
door: Progress Door
- room: The Colorful (Orange)
door: Progress Door
- room: The Colorful (Green)
door: Progress Door
- room: The Colorful (Brown)
door: Progress Door
- room: The Colorful (Gray)
door: Progress Door
Welcome Back Area: Welcome Back Area:
entrances: entrances:
Starting Room: Starting Room:

View File

@ -1452,3 +1452,4 @@ progression:
Progressive Fearless: 444470 Progressive Fearless: 444470
Progressive Orange Tower: 444482 Progressive Orange Tower: 444482
Progressive Art Gallery: 444563 Progressive Art Gallery: 444563
Progressive Colorful: 444580

View File

@ -28,6 +28,10 @@ class ItemData(NamedTuple):
# door shuffle is on and tower isn't progressive # door shuffle is on and tower isn't progressive
return world.options.shuffle_doors != ShuffleDoors.option_none \ return world.options.shuffle_doors != ShuffleDoors.option_none \
and not world.options.progressive_orange_tower and not world.options.progressive_orange_tower
elif self.mode == "the colorful":
# complex door shuffle is on and colorful isn't progressive
return world.options.shuffle_doors == ShuffleDoors.option_complex \
and not world.options.progressive_colorful
elif self.mode == "complex door": elif self.mode == "complex door":
return world.options.shuffle_doors == ShuffleDoors.option_complex return world.options.shuffle_doors == ShuffleDoors.option_complex
elif self.mode == "door group": elif self.mode == "door group":
@ -70,6 +74,8 @@ def load_item_data():
if room_name in PROGRESSION_BY_ROOM and door_name in PROGRESSION_BY_ROOM[room_name]: if room_name in PROGRESSION_BY_ROOM and door_name in PROGRESSION_BY_ROOM[room_name]:
if room_name == "Orange Tower": if room_name == "Orange Tower":
door_mode = "orange tower" door_mode = "orange tower"
elif room_name == "The Colorful":
door_mode = "the colorful"
else: else:
door_mode = "special" door_mode = "special"

View File

@ -21,6 +21,13 @@ class ProgressiveOrangeTower(DefaultOnToggle):
display_name = "Progressive Orange Tower" display_name = "Progressive Orange Tower"
class ProgressiveColorful(DefaultOnToggle):
"""When "Shuffle Doors" is on "complex", this setting governs the manner in which The Colorful opens up.
If off, there is an item for each room of The Colorful, meaning that random rooms in the middle of the sequence can open up without giving you access to them.
If on, there are ten progressive items, which open up the sequence from White forward."""
display_name = "Progressive Colorful"
class LocationChecks(Choice): class LocationChecks(Choice):
"""On "normal", there will be a location check for each panel set that would ordinarily open a door, as well as for """On "normal", there will be a location check for each panel set that would ordinarily open a door, as well as for
achievement panels and a small handful of other panels. achievement panels and a small handful of other panels.
@ -117,6 +124,7 @@ class DeathLink(Toggle):
class LingoOptions(PerGameCommonOptions): class LingoOptions(PerGameCommonOptions):
shuffle_doors: ShuffleDoors shuffle_doors: ShuffleDoors
progressive_orange_tower: ProgressiveOrangeTower progressive_orange_tower: ProgressiveOrangeTower
progressive_colorful: ProgressiveColorful
location_checks: LocationChecks location_checks: LocationChecks
shuffle_colors: ShuffleColors shuffle_colors: ShuffleColors
shuffle_panels: ShufflePanels shuffle_panels: ShufflePanels

View File

@ -83,7 +83,8 @@ class LingoPlayerLogic:
def handle_non_grouped_door(self, room_name: str, door_data: Door, world: "LingoWorld"): def handle_non_grouped_door(self, room_name: str, door_data: Door, world: "LingoWorld"):
if room_name in PROGRESSION_BY_ROOM and door_data.name in PROGRESSION_BY_ROOM[room_name]: if room_name in PROGRESSION_BY_ROOM and door_data.name in PROGRESSION_BY_ROOM[room_name]:
if room_name == "Orange Tower" and not world.options.progressive_orange_tower: if (room_name == "Orange Tower" and not world.options.progressive_orange_tower)\
or (room_name == "The Colorful" and not world.options.progressive_colorful):
self.set_door_item(room_name, door_data.name, door_data.item_name) self.set_door_item(room_name, door_data.name, door_data.item_name)
else: else:
progressive_item_name = PROGRESSION_BY_ROOM[room_name][door_data.name].item_name progressive_item_name = PROGRESSION_BY_ROOM[room_name][door_data.name].item_name