From 4f075a4962ce0efda71a3a1947c27f8a5c5a037d Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 4 Feb 2026 14:06:54 -0500 Subject: Validate restricted options when doing daed only mode --- apworld/player_logic.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'apworld/player_logic.py') 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 @@ from enum import IntEnum, auto +from Options import OptionError from .generated import data_pb2 as data_pb2 from .items import SYMBOL_ITEMS from typing import TYPE_CHECKING, NamedTuple -from .options import ShuffleLetters, CyanDoorBehavior +from .options import ShuffleLetters, CyanDoorBehavior, VictoryCondition if TYPE_CHECKING: from . import Lingo2World @@ -261,6 +262,27 @@ class Lingo2PlayerLogic: if should_shuffle_map(game_map)) if world.options.daedalus_only: + if world.options.victory_condition not in [VictoryCondition.option_orange_ending, + VictoryCondition.option_gold_ending]: + raise OptionError(f"When Daedalus Only mode is enabled, the victory condition must be Orange Ending or " + f"Gold Ending (Player {world.player}).") + + if not world.options.shuffle_worldports: + raise OptionError(f"When Daedalus Only mode is enabled, worldport shuffle must also be enabled (Player " + f"{world.player}).") + + if world.options.shuffle_letters != ShuffleLetters.option_unlocked: + raise OptionError(f"When Daedalus Only mode is enabled, letter shuffle must be set to Unlocked (Player " + f"{world.player}).") + + if world.options.cyan_door_behavior == CyanDoorBehavior.option_collect_h2: + raise OptionError(f"When Daedalus Only mode is enabled, Cyan Door Behavior cannot be set to Collect H2 " + f"(Player {world.player}).") + + if not world.options.shuffle_control_center_colors: + raise OptionError(f"When Daedalus Only mode is enabled, control center color shuffle must be enabled " + f"(Player {world.player}).") + for game_map in world.static_logic.objects.maps: if game_map.daedalus_only_mode == data_pb2.DaedalusOnlyMode.DAED_ONLY_PARTIAL: self.shuffled_rooms.update(set(room.id for room in world.static_logic.objects.rooms -- cgit 1.4.1