Fix oversight with some modes
This commit is contained in:
@@ -88,6 +88,7 @@ class World(object):
|
|||||||
self.owwhirlpools = {}
|
self.owwhirlpools = {}
|
||||||
self.owflutespots = {}
|
self.owflutespots = {}
|
||||||
self.owsectors = {}
|
self.owsectors = {}
|
||||||
|
self.allow_flip_sanc = {}
|
||||||
self.doors = []
|
self.doors = []
|
||||||
self._door_cache = {}
|
self._door_cache = {}
|
||||||
self.paired_doors = {}
|
self.paired_doors = {}
|
||||||
@@ -118,6 +119,7 @@ class World(object):
|
|||||||
set_player_attr('owcrossededges', [])
|
set_player_attr('owcrossededges', [])
|
||||||
set_player_attr('owwhirlpools', [])
|
set_player_attr('owwhirlpools', [])
|
||||||
set_player_attr('owsectors', None)
|
set_player_attr('owsectors', None)
|
||||||
|
set_player_attr('allow_flip_sanc', False)
|
||||||
set_player_attr('remote_items', False)
|
set_player_attr('remote_items', False)
|
||||||
set_player_attr('required_medallions', ['Ether', 'Quake'])
|
set_player_attr('required_medallions', ['Ether', 'Quake'])
|
||||||
set_player_attr('bottle_refills', ['Bottle (Green Potion)', 'Bottle (Green Potion)'])
|
set_player_attr('bottle_refills', ['Bottle (Green Potion)', 'Bottle (Green Potion)'])
|
||||||
@@ -319,7 +321,9 @@ class World(object):
|
|||||||
return self.is_tile_swapped(0x2c, player)
|
return self.is_tile_swapped(0x2c, player)
|
||||||
|
|
||||||
def is_dark_chapel_start(self, player):
|
def is_dark_chapel_start(self, player):
|
||||||
return self.is_tile_swapped(0x13, player)
|
if self.allow_flip_sanc[player]:
|
||||||
|
return self.is_tile_swapped(0x13, player)
|
||||||
|
return self.mode[player] == 'inverted'
|
||||||
|
|
||||||
def is_pyramid_open(self, player):
|
def is_pyramid_open(self, player):
|
||||||
if self.open_pyramid[player] == 'yes':
|
if self.open_pyramid[player] == 'yes':
|
||||||
|
|||||||
2
Main.py
2
Main.py
@@ -593,6 +593,7 @@ def copy_world(world):
|
|||||||
ret.standardize_palettes = world.standardize_palettes.copy()
|
ret.standardize_palettes = world.standardize_palettes.copy()
|
||||||
ret.owswaps = world.owswaps.copy()
|
ret.owswaps = world.owswaps.copy()
|
||||||
ret.owflutespots = world.owflutespots.copy()
|
ret.owflutespots = world.owflutespots.copy()
|
||||||
|
ret.allow_flip_sanc = world.allow_flip_sanc.copy()
|
||||||
ret.prizes = world.prizes.copy()
|
ret.prizes = world.prizes.copy()
|
||||||
ret.restrict_boss_items = world.restrict_boss_items.copy()
|
ret.restrict_boss_items = world.restrict_boss_items.copy()
|
||||||
ret.inaccessible_regions = world.inaccessible_regions.copy()
|
ret.inaccessible_regions = world.inaccessible_regions.copy()
|
||||||
@@ -788,6 +789,7 @@ def copy_world_premature(world, player):
|
|||||||
ret.standardize_palettes = world.standardize_palettes.copy()
|
ret.standardize_palettes = world.standardize_palettes.copy()
|
||||||
ret.owswaps = world.owswaps.copy()
|
ret.owswaps = world.owswaps.copy()
|
||||||
ret.owflutespots = world.owflutespots.copy()
|
ret.owflutespots = world.owflutespots.copy()
|
||||||
|
ret.allow_flip_sanc = world.allow_flip_sanc.copy()
|
||||||
ret.prizes = world.prizes.copy()
|
ret.prizes = world.prizes.copy()
|
||||||
ret.restrict_boss_items = world.restrict_boss_items.copy()
|
ret.restrict_boss_items = world.restrict_boss_items.copy()
|
||||||
ret.inaccessible_regions = world.inaccessible_regions.copy()
|
ret.inaccessible_regions = world.inaccessible_regions.copy()
|
||||||
|
|||||||
@@ -151,7 +151,8 @@ def link_overworld(world, player):
|
|||||||
# tile shuffle
|
# tile shuffle
|
||||||
logging.getLogger('').debug('Flipping overworld tiles')
|
logging.getLogger('').debug('Flipping overworld tiles')
|
||||||
if world.owMixed[player]:
|
if world.owMixed[player]:
|
||||||
tile_groups, force_flipped, force_nonflipped, undefined_chance = define_tile_groups(world, False, player)
|
tile_groups, force_flipped, force_nonflipped, undefined_chance, allow_flip_sanc = define_tile_groups(world, False, player)
|
||||||
|
world.allow_flip_sanc[player] = allow_flip_sanc
|
||||||
swapped_edges = shuffle_tiles(world, tile_groups, world.owswaps[player], False, (force_flipped, force_nonflipped, undefined_chance), player)
|
swapped_edges = shuffle_tiles(world, tile_groups, world.owswaps[player], False, (force_flipped, force_nonflipped, undefined_chance), player)
|
||||||
|
|
||||||
update_world_regions(world, player)
|
update_world_regions(world, player)
|
||||||
@@ -241,7 +242,7 @@ def link_overworld(world, player):
|
|||||||
# the idea is to XOR the new flips with the ones from Mixed so that non-parallel edges still work
|
# the idea is to XOR the new flips with the ones from Mixed so that non-parallel edges still work
|
||||||
# Polar corresponds to Grouped with no flips in ow_crossed_tiles_mask
|
# Polar corresponds to Grouped with no flips in ow_crossed_tiles_mask
|
||||||
ow_crossed_tiles_mask = [[],[],[]]
|
ow_crossed_tiles_mask = [[],[],[]]
|
||||||
tile_groups, force_flipped, force_nonflipped, undefined_chance = define_tile_groups(world, True, player)
|
tile_groups, force_flipped, force_nonflipped, undefined_chance, _ = define_tile_groups(world, True, player)
|
||||||
world.owcrossededges[player] = shuffle_tiles(world, tile_groups, ow_crossed_tiles_mask, True, (force_flipped, force_nonflipped, undefined_chance), player)
|
world.owcrossededges[player] = shuffle_tiles(world, tile_groups, ow_crossed_tiles_mask, True, (force_flipped, force_nonflipped, undefined_chance), player)
|
||||||
ow_crossed_tiles = [i for i in range(0x82) if (i in world.owswaps[player][0]) != (i in ow_crossed_tiles_mask[0])]
|
ow_crossed_tiles = [i for i in range(0x82) if (i in world.owswaps[player][0]) != (i in ow_crossed_tiles_mask[0])]
|
||||||
|
|
||||||
@@ -1184,7 +1185,7 @@ def define_tile_groups(world, do_grouped, player):
|
|||||||
tile_groups.append((group, lw_regions, dw_regions))
|
tile_groups.append((group, lw_regions, dw_regions))
|
||||||
|
|
||||||
random.shuffle(tile_groups)
|
random.shuffle(tile_groups)
|
||||||
return tile_groups, flipped_groups, nonflipped_groups, undefined_chance
|
return tile_groups, flipped_groups, nonflipped_groups, undefined_chance, allow_flip_sanc
|
||||||
|
|
||||||
def remove_reserved(world, groupedlist, connected_edges, player):
|
def remove_reserved(world, groupedlist, connected_edges, player):
|
||||||
new_grouping = {}
|
new_grouping = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user