diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2026-02-04 14:06:54 -0500 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2026-02-04 14:06:54 -0500 |
| commit | 4f075a4962ce0efda71a3a1947c27f8a5c5a037d (patch) | |
| tree | 1c3dc74fa9bdf2c9e0b28db8469b835574c61aa5 /apworld/player_logic.py | |
| parent | 92892af0dfefadd00f7681811fd20aaefed1e59f (diff) | |
| download | lingo2-archipelago-4f075a4962ce0efda71a3a1947c27f8a5c5a037d.tar.gz lingo2-archipelago-4f075a4962ce0efda71a3a1947c27f8a5c5a037d.tar.bz2 lingo2-archipelago-4f075a4962ce0efda71a3a1947c27f8a5c5a037d.zip | |
Validate restricted options when doing daed only mode daed-only
Diffstat (limited to 'apworld/player_logic.py')
| -rw-r--r-- | apworld/player_logic.py | 24 |
1 files changed, 23 insertions, 1 deletions
| diff --git a/apworld/player_logic.py b/apworld/player_logic.py index d498f0f..a8385ff 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py | |||
| @@ -1,10 +1,11 @@ | |||
| 1 | from enum import IntEnum, auto | 1 | from enum import IntEnum, auto |
| 2 | 2 | ||
| 3 | from Options import OptionError | ||
| 3 | from .generated import data_pb2 as data_pb2 | 4 | from .generated import data_pb2 as data_pb2 |
| 4 | from .items import SYMBOL_ITEMS | 5 | from .items import SYMBOL_ITEMS |
| 5 | from typing import TYPE_CHECKING, NamedTuple | 6 | from typing import TYPE_CHECKING, NamedTuple |
| 6 | 7 | ||
| 7 | from .options import ShuffleLetters, CyanDoorBehavior | 8 | from .options import ShuffleLetters, CyanDoorBehavior, VictoryCondition |
| 8 | 9 | ||
| 9 | if TYPE_CHECKING: | 10 | if TYPE_CHECKING: |
| 10 | from . import Lingo2World | 11 | from . import Lingo2World |
| @@ -261,6 +262,27 @@ class Lingo2PlayerLogic: | |||
| 261 | if should_shuffle_map(game_map)) | 262 | if should_shuffle_map(game_map)) |
| 262 | 263 | ||
| 263 | if world.options.daedalus_only: | 264 | if world.options.daedalus_only: |
| 265 | if world.options.victory_condition not in [VictoryCondition.option_orange_ending, | ||
| 266 | VictoryCondition.option_gold_ending]: | ||
| 267 | raise OptionError(f"When Daedalus Only mode is enabled, the victory condition must be Orange Ending or " | ||
| 268 | f"Gold Ending (Player {world.player}).") | ||
| 269 | |||
| 270 | if not world.options.shuffle_worldports: | ||
| 271 | raise OptionError(f"When Daedalus Only mode is enabled, worldport shuffle must also be enabled (Player " | ||
| 272 | f"{world.player}).") | ||
| 273 | |||
| 274 | if world.options.shuffle_letters != ShuffleLetters.option_unlocked: | ||
| 275 | raise OptionError(f"When Daedalus Only mode is enabled, letter shuffle must be set to Unlocked (Player " | ||
| 276 | f"{world.player}).") | ||
| 277 | |||
| 278 | if world.options.cyan_door_behavior == CyanDoorBehavior.option_collect_h2: | ||
| 279 | raise OptionError(f"When Daedalus Only mode is enabled, Cyan Door Behavior cannot be set to Collect H2 " | ||
| 280 | f"(Player {world.player}).") | ||
| 281 | |||
| 282 | if not world.options.shuffle_control_center_colors: | ||
| 283 | raise OptionError(f"When Daedalus Only mode is enabled, control center color shuffle must be enabled " | ||
| 284 | f"(Player {world.player}).") | ||
| 285 | |||
| 264 | for game_map in world.static_logic.objects.maps: | 286 | for game_map in world.static_logic.objects.maps: |
| 265 | if game_map.daedalus_only_mode == data_pb2.DaedalusOnlyMode.DAED_ONLY_PARTIAL: | 287 | if game_map.daedalus_only_mode == data_pb2.DaedalusOnlyMode.DAED_ONLY_PARTIAL: |
| 266 | self.shuffled_rooms.update(set(room.id for room in world.static_logic.objects.rooms | 288 | self.shuffled_rooms.update(set(room.id for room in world.static_logic.objects.rooms |
