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):
|
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'))
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
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 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:
|
||||||
|
|||||||
Reference in New Issue
Block a user