Several bug fixes for yesterday's debacle

This commit is contained in:
aerinon
2020-01-24 08:51:34 -07:00
parent f6179cda03
commit 59e9fb82f5
5 changed files with 18 additions and 14 deletions

View File

@@ -1613,8 +1613,9 @@ class Spoiler(object):
for player in range(1, self.world.players + 1): for player in range(1, self.world.players + 1):
if self.world.players > 1: if self.world.players > 1:
outfile.write('\nPlayer %d: %s\n' % (player, self.world.get_player_names(player))) outfile.write('\nPlayer %d: %s\n' % (player, self.world.get_player_names(player)))
for team in range(self.world.teams): if len(self.hashes) > 0:
outfile.write('%s%s\n' % (f"Hash - {self.world.player_names[player][team]} (Team {team+1}): " if self.world.teams > 1 else 'Hash: ', self.hashes[player, team])) for team in range(self.world.teams):
outfile.write('%s%s\n' % (f"Hash - {self.world.player_names[player][team]} (Team {team+1}): " if self.world.teams > 1 else 'Hash: ', self.hashes[player, team]))
outfile.write('Logic: %s\n' % self.metadata['logic'][player]) outfile.write('Logic: %s\n' % self.metadata['logic'][player])
outfile.write('Mode: %s\n' % self.metadata['mode'][player]) outfile.write('Mode: %s\n' % self.metadata['mode'][player])
outfile.write('Retro: %s\n' % ('Yes' if self.metadata['retro'][player] else 'No')) outfile.write('Retro: %s\n' % ('Yes' if self.metadata['retro'][player] else 'No'))

View File

@@ -1278,12 +1278,12 @@ def identify_polarity_issues(dungeon_map):
for name, builder in dungeon_map.items(): for name, builder in dungeon_map.items():
if len(builder.sectors) == 1: if len(builder.sectors) == 1:
continue continue
if len(builder.sectors) == 2:
def sector_filter(x, y):
return x != y
else: else:
def sector_filter(x, y): def sector_filter(x, y):
return x != y and x.outflow() > 1 # todo: entrance sector being filtered return x != y
# else:
# def sector_filter(x, y):
# return x != y and (x.outflow() > 1 or is_entrance_sector(builder, x))
connection_flags = {} connection_flags = {}
for slot in PolSlot: for slot in PolSlot:
connection_flags[slot] = {} connection_flags[slot] = {}
@@ -1770,11 +1770,14 @@ def create_origin_builder(builder, dungeon_map, entrance_region_names, stonewall
origin_builder.all_entrances = [] origin_builder.all_entrances = []
for ent in builder.all_entrances: for ent in builder.all_entrances:
sector = find_sector(ent, candidate_sectors) sector = find_sector(ent, candidate_sectors)
for door in sector.outstanding_doors: if sector is not None:
if not door.blocked: for door in sector.outstanding_doors:
origin_builder.all_entrances.append(ent) if not door.blocked:
assign_sector(sector, origin_builder, candidate_sectors) origin_builder.all_entrances.append(ent)
break assign_sector(sector, origin_builder, candidate_sectors)
break
else: # already got assigned
origin_builder.all_entrances.append(ent)
assign_sector(stonewall_connector, origin_builder, candidate_sectors) assign_sector(stonewall_connector, origin_builder, candidate_sectors)
return origin_builder return origin_builder

View File

@@ -346,7 +346,7 @@ def start():
from Gui import guiMain from Gui import guiMain
guiMain(args) guiMain(args)
elif args.count is not None: elif args.count is not None:
seed = args.seed seed = args.seed or random.randint(0, 999999999)
failures = [] failures = []
logger = logging.getLogger('') logger = logging.getLogger('')
for _ in range(args.count): for _ in range(args.count):

View File

@@ -864,7 +864,7 @@ def validate_key_layout_sub_loop(key_layout, state, checked_states, flat_proposa
def cnt_avail_small_locations(free_locations, key_only, state, world, player): def cnt_avail_small_locations(free_locations, key_only, state, world, player):
if not world.keyshuffle[player] and not world.retro[player]: if not world.keyshuffle[player] and not world.retro[player]:
avail_chest_keys = min(free_locations - state.used_locations, state.key_locations - key_only) avail_chest_keys = min(free_locations - state.used_locations + state.used_smalls, state.key_locations - key_only)
return max(0, avail_chest_keys + key_only - state.used_smalls) return max(0, avail_chest_keys + key_only - state.used_smalls)
return state.key_locations - state.used_smalls return state.key_locations - state.used_smalls

View File

@@ -23,7 +23,7 @@ from Fill import distribute_items_cutoff, distribute_items_staleness, distribute
from ItemList import generate_itempool, difficulties, fill_prizes from ItemList import generate_itempool, difficulties, fill_prizes
from Utils import output_path, parse_player_names from Utils import output_path, parse_player_names
__version__ = '0.0.6-pre' __version__ = '0.0.7-pre'
def main(args, seed=None): def main(args, seed=None):
if args.outputpath: if args.outputpath: