Merge pull request #18 from Catobat/UndefinedChanceFix

Fix edge cases with undefined_chance
This commit is contained in:
codemann8
2024-05-23 18:54:15 -05:00
committed by GitHub
4 changed files with 10 additions and 6 deletions

View File

@@ -3405,7 +3405,7 @@ def find_accessible_entrances(world, player, builder):
visited_entrances = []
# Add Sanctuary as an additional entrance in open mode, since you can save and quit to there
if world.mode[player] == 'open' and world.get_region('Sanctuary', player).dungeon.name == builder.name and 'Sanctuary' not in entrances:
if not world.is_dark_chapel_start(player) and world.get_region('Sanctuary', player).dungeon.name == builder.name and 'Sanctuary' not in entrances:
entrances.append('Sanctuary')
visited_entrances.append('Sanctuary')
regs.remove(world.get_region('Sanctuary', player))

View File

@@ -1516,7 +1516,7 @@ def create_doors(world, player):
# static portal flags
world.get_door('Sanctuary S', player).dead_end(allowPassage=True)
if world.mode[player] == 'open' and world.shuffle[player] not in ['lean', 'swapped', 'crossed', 'insanity']:
if not world.is_dark_chapel_start(player) and world.shuffle[player] not in ['lean', 'swapped', 'crossed', 'insanity']:
world.get_door('Sanctuary S', player).lw_restricted = True
world.get_door('Eastern Hint Tile Blocked Path SE', player).passage = False
world.get_door('TR Big Chest Entrance SE', player).passage = False

View File

@@ -1360,7 +1360,7 @@ def create_dungeon_builders(all_sectors, connections_tuple, world, player, dunge
for name, builder in dungeon_map.items():
calc_allowance_and_dead_ends(builder, connections_tuple, world, player)
if world.mode[player] == 'open' and world.shuffle[player] not in ['lean', 'swapped', 'crossed', 'insanity']:
if not world.is_dark_chapel_start(player) and world.shuffle[player] not in ['lean', 'swapped', 'crossed', 'insanity']:
sanc = find_sector('Sanctuary', candidate_sectors)
if sanc: # only run if sanc if a candidate
lw_builders = []

View File

@@ -1049,9 +1049,13 @@ def shuffle_tiles(world, groups, result_list, do_grouped, forced_flips, player):
# tile shuffle happens here
removed = []
if 0 < undefined_chance < 100:
for group in groups:
if group[0] in nonflipped_groups or (group[0] not in flipped_groups and random.randint(1, 100) > undefined_chance):
for group in groups:
if group[0] in nonflipped_groups:
removed.append(group)
else:
if group[0] in flipped_groups or undefined_chance >= 100:
continue
if undefined_chance == 0 or random.randint(1, 100) > undefined_chance:
removed.append(group)
# save shuffled tiles to list