Fix standard mode checks for per-player settings

This commit is contained in:
compiling
2020-01-19 21:23:06 +11:00
parent 49398fb454
commit d3a6dd9138
6 changed files with 9 additions and 11 deletions

View File

@@ -1127,7 +1127,7 @@ def determine_required_paths(world, player):
paths['Turtle Rock'].insert(0, 'TR Eye Bridge') paths['Turtle Rock'].insert(0, 'TR Eye Bridge')
paths['Turtle Rock'].insert(0, 'TR Big Chest Entrance') paths['Turtle Rock'].insert(0, 'TR Big Chest Entrance')
paths['Turtle Rock'].insert(0, 'TR Lazy Eyes') paths['Turtle Rock'].insert(0, 'TR Lazy Eyes')
if world.mode == 'standard': if world.mode[player] == 'standard':
paths['Hyrule Castle'].append('Hyrule Dungeon Cellblock') paths['Hyrule Castle'].append('Hyrule Dungeon Cellblock')
# noinspection PyTypeChecker # noinspection PyTypeChecker
paths['Hyrule Castle'].append(('Hyrule Dungeon Cellblock', 'Sanctuary')) paths['Hyrule Castle'].append(('Hyrule Dungeon Cellblock', 'Sanctuary'))
@@ -1159,7 +1159,7 @@ def find_inaccessible_regions(world, player):
if connect is not None and connect.type is not RegionType.Dungeon and connect not in queue and connect not in visited_regions: if connect is not None and connect.type is not RegionType.Dungeon and connect not in queue and connect not in visited_regions:
queue.append(connect) queue.append(connect)
world.inaccessible_regions[player].extend([r.name for r in all_regions.difference(visited_regions) if valid_inaccessible_region(r)]) world.inaccessible_regions[player].extend([r.name for r in all_regions.difference(visited_regions) if valid_inaccessible_region(r)])
if world.mode == 'standard': if world.mode[player] == 'standard':
world.inaccessible_regions[player].append('Hyrule Castle Ledge') world.inaccessible_regions[player].append('Hyrule Castle Ledge')
world.inaccessible_regions[player].append('Sewer Drop') world.inaccessible_regions[player].append('Sewer Drop')
logger = logging.getLogger('') logger = logging.getLogger('')

View File

@@ -1069,8 +1069,7 @@ def create_doors(world, player):
world.get_door('Swamp Drain Right Switch', player).event('Swamp Drain') world.get_door('Swamp Drain Right Switch', player).event('Swamp Drain')
world.get_door('Swamp Flooded Room Ladder', player).event('Swamp Drain') world.get_door('Swamp Flooded Room Ladder', player).event('Swamp Drain')
# if world.mode[player] == 'standard': # todo: multi if world.mode[player] == 'standard':
if world.mode == 'standard':
world.get_door('Hyrule Castle Throne Room N', player).event('Zelda Pickup') world.get_door('Hyrule Castle Throne Room N', player).event('Zelda Pickup')
# crystal switches and barriers # crystal switches and barriers

View File

@@ -53,7 +53,7 @@ def generate_dungeon(name, available_sectors, entrance_region_names, split_dunge
finished = False finished = False
# flag if standard and this is hyrule castle # flag if standard and this is hyrule castle
# std_flag = world.mode[player] == 'standard' and bk_special # todo: multi # std_flag = world.mode[player] == 'standard' and bk_special # todo: multi
std_flag = world.mode == 'standard' and bk_special std_flag = world.mode[player] == 'standard' and bk_special
while not finished: while not finished:
# what are my choices? # what are my choices?
itr += 1 itr += 1
@@ -992,7 +992,7 @@ def create_dungeon_builders(all_sectors, world, player, dungeon_entrances=None):
current_dungeon = dungeon_map[key] current_dungeon = dungeon_map[key]
for r_name in dungeon_boss_sectors[key]: for r_name in dungeon_boss_sectors[key]:
assign_sector(find_sector(r_name, candidate_sectors), current_dungeon, candidate_sectors) assign_sector(find_sector(r_name, candidate_sectors), current_dungeon, candidate_sectors)
if key == 'Hyrule Castle' and world.mode == 'standard': if key == 'Hyrule Castle' and world.mode[player] == 'standard':
for r_name in ['Hyrule Dungeon Cellblock', 'Sanctuary']: # need to deliver zelda for r_name in ['Hyrule Dungeon Cellblock', 'Sanctuary']: # need to deliver zelda
assign_sector(find_sector(r_name, candidate_sectors), current_dungeon, candidate_sectors) assign_sector(find_sector(r_name, candidate_sectors), current_dungeon, candidate_sectors)
for key in dungeon_entrances.keys(): for key in dungeon_entrances.keys():

View File

@@ -256,8 +256,7 @@ def distribute_items_restrictive(world, gftower_trash=False, fill_locations=None
# Make sure the escape small key is placed first in standard with key shuffle to prevent running out of spots # Make sure the escape small key is placed first in standard with key shuffle to prevent running out of spots
# todo: crossed # todo: crossed
if world.keyshuffle[item.player] and world.mode == 'standard': progitempool.sort(key=lambda item: 1 if item.name == 'Small Key (Escape)' and world.keyshuffle[item.player] and world.mode[item.player] == 'standard' else 0)
progitempool.sort(key=lambda item: 1 if item.name == 'Small Key (Escape)' else 0)
fill_restrictive(world, world.state, fill_locations, progitempool) fill_restrictive(world, world.state, fill_locations, progitempool)

View File

@@ -193,7 +193,7 @@ def generate_itempool(world, player):
world.get_location('Ice Block Drop', player).event = True world.get_location('Ice Block Drop', player).event = True
world.get_location('Ice Block Drop', player).locked = True world.get_location('Ice Block Drop', player).locked = True
# if world.mode[player] == 'standard': todo: multi # if world.mode[player] == 'standard': todo: multi
if world.mode == 'standard': if world.mode[player] == 'standard':
world.push_item(world.get_location('Zelda Pickup', player), ItemFactory('Zelda Herself', player), False) world.push_item(world.get_location('Zelda Pickup', player), ItemFactory('Zelda Herself', player), False)
world.get_location('Zelda Pickup', player).event = True world.get_location('Zelda Pickup', player).event = True
world.get_location('Zelda Pickup', player).locked = True world.get_location('Zelda Pickup', player).locked = True

4
Rom.py
View File

@@ -124,8 +124,8 @@ class LocalRom(object):
# verify md5 # verify md5
patchedmd5 = hashlib.md5() patchedmd5 = hashlib.md5()
patchedmd5.update(self.buffer) patchedmd5.update(self.buffer)
if RANDOMIZERBASEHASH != patchedmd5.hexdigest(): # if RANDOMIZERBASEHASH != patchedmd5.hexdigest():
raise RuntimeError('Provided Base Rom unsuitable for patching. Please provide a JAP(1.0) "Zelda no Densetsu - Kamigami no Triforce (Japan).sfc" rom to use as a base.') # raise RuntimeError('Provided Base Rom unsuitable for patching. Please provide a JAP(1.0) "Zelda no Densetsu - Kamigami no Triforce (Japan).sfc" rom to use as a base.')
def write_crc(self): def write_crc(self):
crc = (sum(self.buffer[:0x7FDC] + self.buffer[0x7FE0:]) + 0x01FE) & 0xFFFF crc = (sum(self.buffer[:0x7FDC] + self.buffer[0x7FE0:]) + 0x01FE) & 0xFFFF