summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--data/LL1.yaml22
-rw-r--r--data/ids.yaml1
-rw-r--r--items.py6
-rw-r--r--options.py8
-rw-r--r--player_logic.py3
5 files changed, 39 insertions, 1 deletions
diff --git a/data/LL1.yaml b/data/LL1.yaml index cc46677..d7d4630 100644 --- a/data/LL1.yaml +++ b/data/LL1.yaml
@@ -2670,6 +2670,28 @@
2670 paintings: 2670 paintings:
2671 - id: arrows_painting_12 2671 - id: arrows_painting_12
2672 orientation: north 2672 orientation: north
2673 progression:
2674 Progressive Colorful:
2675 - room: The Colorful (White)
2676 door: Progress Door
2677 - room: The Colorful (Black)
2678 door: Progress Door
2679 - room: The Colorful (Red)
2680 door: Progress Door
2681 - room: The Colorful (Yellow)
2682 door: Progress Door
2683 - room: The Colorful (Blue)
2684 door: Progress Door
2685 - room: The Colorful (Purple)
2686 door: Progress Door
2687 - room: The Colorful (Orange)
2688 door: Progress Door
2689 - room: The Colorful (Green)
2690 door: Progress Door
2691 - room: The Colorful (Brown)
2692 door: Progress Door
2693 - room: The Colorful (Gray)
2694 door: Progress Door
2673 Welcome Back Area: 2695 Welcome Back Area:
2674 entrances: 2696 entrances:
2675 Starting Room: 2697 Starting Room:
diff --git a/data/ids.yaml b/data/ids.yaml index 3239f21..2b9e7f3 100644 --- a/data/ids.yaml +++ b/data/ids.yaml
@@ -1452,3 +1452,4 @@ progression:
1452 Progressive Fearless: 444470 1452 Progressive Fearless: 444470
1453 Progressive Orange Tower: 444482 1453 Progressive Orange Tower: 444482
1454 Progressive Art Gallery: 444563 1454 Progressive Art Gallery: 444563
1455 Progressive Colorful: 444580
diff --git a/items.py b/items.py index af24570..7b1a650 100644 --- a/items.py +++ b/items.py
@@ -28,6 +28,10 @@ class ItemData(NamedTuple):
28 # door shuffle is on and tower isn't progressive 28 # door shuffle is on and tower isn't progressive
29 return world.options.shuffle_doors != ShuffleDoors.option_none \ 29 return world.options.shuffle_doors != ShuffleDoors.option_none \
30 and not world.options.progressive_orange_tower 30 and not world.options.progressive_orange_tower
31 elif self.mode == "the colorful":
32 # complex door shuffle is on and colorful isn't progressive
33 return world.options.shuffle_doors == ShuffleDoors.option_complex \
34 and not world.options.progressive_colorful
31 elif self.mode == "complex door": 35 elif self.mode == "complex door":
32 return world.options.shuffle_doors == ShuffleDoors.option_complex 36 return world.options.shuffle_doors == ShuffleDoors.option_complex
33 elif self.mode == "door group": 37 elif self.mode == "door group":
@@ -70,6 +74,8 @@ def load_item_data():
70 if room_name in PROGRESSION_BY_ROOM and door_name in PROGRESSION_BY_ROOM[room_name]: 74 if room_name in PROGRESSION_BY_ROOM and door_name in PROGRESSION_BY_ROOM[room_name]:
71 if room_name == "Orange Tower": 75 if room_name == "Orange Tower":
72 door_mode = "orange tower" 76 door_mode = "orange tower"
77 elif room_name == "The Colorful":
78 door_mode = "the colorful"
73 else: 79 else:
74 door_mode = "special" 80 door_mode = "special"
75 81
diff --git a/options.py b/options.py index c002086..ec6158f 100644 --- a/options.py +++ b/options.py
@@ -21,6 +21,13 @@ class ProgressiveOrangeTower(DefaultOnToggle):
21 display_name = "Progressive Orange Tower" 21 display_name = "Progressive Orange Tower"
22 22
23 23
24class ProgressiveColorful(DefaultOnToggle):
25 """When "Shuffle Doors" is on "complex", this setting governs the manner in which The Colorful opens up.
26 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.
27 If on, there are ten progressive items, which open up the sequence from White forward."""
28 display_name = "Progressive Colorful"
29
30
24class LocationChecks(Choice): 31class LocationChecks(Choice):
25 """On "normal", there will be a location check for each panel set that would ordinarily open a door, as well as for 32 """On "normal", there will be a location check for each panel set that would ordinarily open a door, as well as for
26 achievement panels and a small handful of other panels. 33 achievement panels and a small handful of other panels.
@@ -117,6 +124,7 @@ class DeathLink(Toggle):
117class LingoOptions(PerGameCommonOptions): 124class LingoOptions(PerGameCommonOptions):
118 shuffle_doors: ShuffleDoors 125 shuffle_doors: ShuffleDoors
119 progressive_orange_tower: ProgressiveOrangeTower 126 progressive_orange_tower: ProgressiveOrangeTower
127 progressive_colorful: ProgressiveColorful
120 location_checks: LocationChecks 128 location_checks: LocationChecks
121 shuffle_colors: ShuffleColors 129 shuffle_colors: ShuffleColors
122 shuffle_panels: ShufflePanels 130 shuffle_panels: ShufflePanels
diff --git a/player_logic.py b/player_logic.py index fa497c5..57bcc4b 100644 --- a/player_logic.py +++ b/player_logic.py
@@ -83,7 +83,8 @@ class LingoPlayerLogic:
83 83
84 def handle_non_grouped_door(self, room_name: str, door_data: Door, world: "LingoWorld"): 84 def handle_non_grouped_door(self, room_name: str, door_data: Door, world: "LingoWorld"):
85 if room_name in PROGRESSION_BY_ROOM and door_data.name in PROGRESSION_BY_ROOM[room_name]: 85 if room_name in PROGRESSION_BY_ROOM and door_data.name in PROGRESSION_BY_ROOM[room_name]:
86 if room_name == "Orange Tower" and not world.options.progressive_orange_tower: 86 if (room_name == "Orange Tower" and not world.options.progressive_orange_tower)\
87 or (room_name == "The Colorful" and not world.options.progressive_colorful):
87 self.set_door_item(room_name, door_data.name, door_data.item_name) 88 self.set_door_item(room_name, door_data.name, door_data.item_name)
88 else: 89 else:
89 progressive_item_name = PROGRESSION_BY_ROOM[room_name][door_data.name].item_name 90 progressive_item_name = PROGRESSION_BY_ROOM[room_name][door_data.name].item_name