From 71475230bad28cda8ca895e669367105837dd7f6 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Mon, 8 Sep 2025 23:22:22 +0200 Subject: [PATCH] Core: Only error in playthrough generation if game is not beatable The current flow of accessibility works like this: ``` if fulfills_accessibility fails: if multiworld can be beaten: log a warning else: raise Exception if playthrough is enabled: if any progression items are not reachable: raise Exception ``` This means that if you do a generation where the game is beatable but some full players' items are not reachable, it doesn't crash on accessibility check, but then crashes on playthrough. This means that **whether it crashes depends on whether you have playthrough enabled or not**. Imo, erroring on something accessibility-related is outside of the scope of create_playthrough. Create_playthrough only needs to care about whether it can fulfill its own goal - Building a minimal playthrough to everyone's victory. The actual accessibility check should take care of the accessibility. --- BaseClasses.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index ca717b60f2..2af5f7cff8 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -1719,9 +1719,9 @@ class Spoiler: logging.debug('The following items could not be reached: %s', ['%s (Player %d) at %s (Player %d)' % ( location.item.name, location.item.player, location.name, location.player) for location in sphere_candidates]) - if any([multiworld.worlds[location.item.player].options.accessibility != 'minimal' for location in sphere_candidates]): - raise RuntimeError(f'Not all progression items reachable ({sphere_candidates}). ' - f'Something went terribly wrong here.') + if not multiworld.has_beaten_game(state): + raise RuntimeError(f'Not all progression items reachable ({sphere_candidates}), and as a result, ' + f'the multiworld was not beatable. Something went terribly wrong here.') else: self.unreachables = sphere_candidates break