about summary refs log tree commit diff stats
path: root/apworld/player_logic.py
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/player_logic.py')
-rw-r--r--apworld/player_logic.py24
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 @@
1from enum import IntEnum, auto 1from enum import IntEnum, auto
2 2
3from Options import OptionError
3from .generated import data_pb2 as data_pb2 4from .generated import data_pb2 as data_pb2
4from .items import SYMBOL_ITEMS 5from .items import SYMBOL_ITEMS
5from typing import TYPE_CHECKING, NamedTuple 6from typing import TYPE_CHECKING, NamedTuple
6 7
7from .options import ShuffleLetters, CyanDoorBehavior 8from .options import ShuffleLetters, CyanDoorBehavior, VictoryCondition
8 9
9if TYPE_CHECKING: 10if 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