Skip unneeded rules in copy_world_premature
This commit is contained in:
@@ -65,7 +65,7 @@ class World(object):
|
|||||||
self.lock_aga_door_in_escape = False
|
self.lock_aga_door_in_escape = False
|
||||||
self.save_and_quit_from_boss = True
|
self.save_and_quit_from_boss = True
|
||||||
self.override_bomb_check = False
|
self.override_bomb_check = False
|
||||||
self.is_copied_world = False
|
self.is_premature_copied_world = False
|
||||||
self.accessibility = accessibility.copy()
|
self.accessibility = accessibility.copy()
|
||||||
self.fix_skullwoods_exit = {}
|
self.fix_skullwoods_exit = {}
|
||||||
self.fix_palaceofdarkness_exit = {}
|
self.fix_palaceofdarkness_exit = {}
|
||||||
|
|||||||
2
Main.py
2
Main.py
@@ -1026,7 +1026,7 @@ def copy_world_premature(world, player):
|
|||||||
ret.key_logic = world.key_logic.copy()
|
ret.key_logic = world.key_logic.copy()
|
||||||
ret.settings = world.settings
|
ret.settings = world.settings
|
||||||
|
|
||||||
ret.is_copied_world = True
|
ret.is_premature_copied_world = True
|
||||||
|
|
||||||
create_regions(ret, player)
|
create_regions(ret, player)
|
||||||
update_world_regions(ret, player)
|
update_world_regions(ret, player)
|
||||||
|
|||||||
31
Rules.py
31
Rules.py
@@ -50,9 +50,11 @@ def set_rules(world, player):
|
|||||||
ow_bunny_rules(world, player)
|
ow_bunny_rules(world, player)
|
||||||
ow_terrain_rules(world, player)
|
ow_terrain_rules(world, player)
|
||||||
|
|
||||||
|
if world.is_premature_copied_world:
|
||||||
|
return
|
||||||
|
|
||||||
if world.mode[player] == 'standard':
|
if world.mode[player] == 'standard':
|
||||||
if not world.is_copied_world:
|
standard_rules(world, player)
|
||||||
standard_rules(world, player)
|
|
||||||
else:
|
else:
|
||||||
misc_key_rules(world, player)
|
misc_key_rules(world, player)
|
||||||
|
|
||||||
@@ -91,23 +93,20 @@ def set_rules(world, player):
|
|||||||
|
|
||||||
if (world.flute_mode[player] != 'active' and not world.is_tile_swapped(0x18, player)
|
if (world.flute_mode[player] != 'active' and not world.is_tile_swapped(0x18, player)
|
||||||
and 'Ocarina (Activated)' not in list(map(str, [i for i in world.precollected_items if i.player == player]))):
|
and 'Ocarina (Activated)' not in list(map(str, [i for i in world.precollected_items if i.player == player]))):
|
||||||
if not world.is_copied_world:
|
# Commented out below, this would be needed for rando implementations where Inverted requires flute activation in bunny territory
|
||||||
# Commented out below, this would be needed for rando implementations where Inverted requires flute activation in bunny territory
|
# kak_region = self.world.get_region('Kakariko Village', player)
|
||||||
# kak_region = self.world.get_region('Kakariko Village', player)
|
# add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player) and state.is_not_bunny(kak_region, player))
|
||||||
# add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player) and state.is_not_bunny(kak_region, player))
|
add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player))
|
||||||
add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player))
|
|
||||||
|
|
||||||
# if swamp and dam have not been moved we require mirror for swamp palace
|
# if swamp and dam have not been moved we require mirror for swamp palace
|
||||||
if not world.swamp_patch_required[player]:
|
if not world.swamp_patch_required[player]:
|
||||||
add_rule(world.get_entrance('Swamp Lobby Moat', player), lambda state: state.has_Mirror(player))
|
add_rule(world.get_entrance('Swamp Lobby Moat', player), lambda state: state.has_Mirror(player))
|
||||||
|
|
||||||
if not world.is_copied_world:
|
set_bunny_rules(world, player, world.mode[player] == 'inverted')
|
||||||
set_bunny_rules(world, player, world.mode[player] == 'inverted')
|
|
||||||
|
|
||||||
# These rules go here because they overwrite/add to some of the above rules
|
# These rules go here because they overwrite/add to some of the above rules
|
||||||
if world.logic[player] == 'hybridglitches':
|
if world.logic[player] == 'hybridglitches':
|
||||||
if not world.is_copied_world:
|
underworld_glitches_rules(world, player)
|
||||||
underworld_glitches_rules(world, player)
|
|
||||||
|
|
||||||
def mirrorless_path_to_location(world, startName, targetName, player):
|
def mirrorless_path_to_location(world, startName, targetName, player):
|
||||||
# If Agahnim is defeated then the courtyard needs to be accessible without using the mirror for the mirror offset glitch.
|
# If Agahnim is defeated then the courtyard needs to be accessible without using the mirror for the mirror offset glitch.
|
||||||
@@ -399,7 +398,7 @@ def global_rules(world, player):
|
|||||||
|
|
||||||
# bonk items
|
# bonk items
|
||||||
if world.shuffle_bonk_drops[player]:
|
if world.shuffle_bonk_drops[player]:
|
||||||
if not world.is_copied_world:
|
if not world.is_premature_copied_world:
|
||||||
from Regions import bonk_prize_table
|
from Regions import bonk_prize_table
|
||||||
for location_name, (_, _, aga_required, _, _, _) in bonk_prize_table.items():
|
for location_name, (_, _, aga_required, _, _, _) in bonk_prize_table.items():
|
||||||
loc = world.get_location(location_name, player)
|
loc = world.get_location(location_name, player)
|
||||||
@@ -983,7 +982,7 @@ def global_rules(world, player):
|
|||||||
|
|
||||||
add_key_logic_rules(world, player)
|
add_key_logic_rules(world, player)
|
||||||
|
|
||||||
if world.logic[player] == 'hybridglitches' and not world.is_copied_world:
|
if world.logic[player] == 'hybridglitches' and not world.is_premature_copied_world:
|
||||||
add_hmg_key_logic_rules(world, player)
|
add_hmg_key_logic_rules(world, player)
|
||||||
# End of door rando rules.
|
# End of door rando rules.
|
||||||
|
|
||||||
@@ -1490,7 +1489,7 @@ def no_glitches_rules(world, player):
|
|||||||
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: False) # no glitches does not require block override
|
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: False) # no glitches does not require block override
|
||||||
set_rule(world.get_entrance('Ice Lake Northeast Pier Hop', player), lambda state: False)
|
set_rule(world.get_entrance('Ice Lake Northeast Pier Hop', player), lambda state: False)
|
||||||
forbid_bomb_jump_requirements(world, player)
|
forbid_bomb_jump_requirements(world, player)
|
||||||
if not world.is_copied_world:
|
if not world.is_premature_copied_world:
|
||||||
add_conditional_lamps(world, player)
|
add_conditional_lamps(world, player)
|
||||||
|
|
||||||
|
|
||||||
@@ -1801,11 +1800,11 @@ def standard_rules(world, player):
|
|||||||
add_rule(world.get_entrance(entrance, player), lambda state: state.has('Zelda Delivered', player))
|
add_rule(world.get_entrance(entrance, player), lambda state: state.has('Zelda Delivered', player))
|
||||||
|
|
||||||
if world.shuffle_bonk_drops[player]:
|
if world.shuffle_bonk_drops[player]:
|
||||||
if not world.is_copied_world:
|
if not world.is_premature_copied_world:
|
||||||
add_rule(world.get_location('Hyrule Castle Tree', player), lambda state: state.has('Zelda Delivered', player))
|
add_rule(world.get_location('Hyrule Castle Tree', player), lambda state: state.has('Zelda Delivered', player))
|
||||||
add_rule(world.get_location('Central Bonk Rocks Tree', player), lambda state: state.has('Zelda Delivered', player))
|
add_rule(world.get_location('Central Bonk Rocks Tree', player), lambda state: state.has('Zelda Delivered', player))
|
||||||
|
|
||||||
if not world.is_copied_world:
|
if not world.is_premature_copied_world:
|
||||||
add_rule(world.get_location('Hyrule Castle Courtyard Tree Pull', player), lambda state: state.has('Zelda Delivered', player))
|
add_rule(world.get_location('Hyrule Castle Courtyard Tree Pull', player), lambda state: state.has('Zelda Delivered', player))
|
||||||
|
|
||||||
# don't allow bombs to get past here before zelda is rescued
|
# don't allow bombs to get past here before zelda is rescued
|
||||||
|
|||||||
Reference in New Issue
Block a user