Several bug fixes for yesterday's debacle
This commit is contained in:
@@ -1613,8 +1613,9 @@ class Spoiler(object):
|
||||
for player in range(1, self.world.players + 1):
|
||||
if self.world.players > 1:
|
||||
outfile.write('\nPlayer %d: %s\n' % (player, self.world.get_player_names(player)))
|
||||
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]))
|
||||
if len(self.hashes) > 0:
|
||||
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('Mode: %s\n' % self.metadata['mode'][player])
|
||||
outfile.write('Retro: %s\n' % ('Yes' if self.metadata['retro'][player] else 'No'))
|
||||
|
||||
@@ -1278,12 +1278,12 @@ def identify_polarity_issues(dungeon_map):
|
||||
for name, builder in dungeon_map.items():
|
||||
if len(builder.sectors) == 1:
|
||||
continue
|
||||
if len(builder.sectors) == 2:
|
||||
def sector_filter(x, y):
|
||||
return x != y
|
||||
else:
|
||||
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 = {}
|
||||
for slot in PolSlot:
|
||||
connection_flags[slot] = {}
|
||||
@@ -1770,11 +1770,14 @@ def create_origin_builder(builder, dungeon_map, entrance_region_names, stonewall
|
||||
origin_builder.all_entrances = []
|
||||
for ent in builder.all_entrances:
|
||||
sector = find_sector(ent, candidate_sectors)
|
||||
for door in sector.outstanding_doors:
|
||||
if not door.blocked:
|
||||
origin_builder.all_entrances.append(ent)
|
||||
assign_sector(sector, origin_builder, candidate_sectors)
|
||||
break
|
||||
if sector is not None:
|
||||
for door in sector.outstanding_doors:
|
||||
if not door.blocked:
|
||||
origin_builder.all_entrances.append(ent)
|
||||
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)
|
||||
return origin_builder
|
||||
|
||||
|
||||
@@ -346,7 +346,7 @@ def start():
|
||||
from Gui import guiMain
|
||||
guiMain(args)
|
||||
elif args.count is not None:
|
||||
seed = args.seed
|
||||
seed = args.seed or random.randint(0, 999999999)
|
||||
failures = []
|
||||
logger = logging.getLogger('')
|
||||
for _ in range(args.count):
|
||||
|
||||
@@ -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):
|
||||
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 state.key_locations - state.used_smalls
|
||||
|
||||
|
||||
2
Main.py
2
Main.py
@@ -23,7 +23,7 @@ from Fill import distribute_items_cutoff, distribute_items_staleness, distribute
|
||||
from ItemList import generate_itempool, difficulties, fill_prizes
|
||||
from Utils import output_path, parse_player_names
|
||||
|
||||
__version__ = '0.0.6-pre'
|
||||
__version__ = '0.0.7-pre'
|
||||
|
||||
def main(args, seed=None):
|
||||
if args.outputpath:
|
||||
|
||||
Reference in New Issue
Block a user