Move exit points of PoD, SW and TR down so you cannot get stuck in them when exiting through them before opening them.
This commit is contained in:
parent
54b63355b3
commit
dcef154609
|
@ -38,6 +38,9 @@ class World(object):
|
|||
self.fix_trock_doors = self.shuffle != 'vanilla'
|
||||
self.save_and_quite_from_boss = False
|
||||
self.check_beatable_only = check_beatable_only
|
||||
self.fix_skullwoods_exit = self.shuffle not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']
|
||||
self.fix_palaceofdarkness_exit = self.shuffle not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']
|
||||
self.fix_trock_exit = self.shuffle not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']
|
||||
|
||||
def get_region(self, regionname):
|
||||
if isinstance(regionname, Region):
|
||||
|
|
|
@ -1215,25 +1215,18 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
|
|||
('Dark Death Mountain Drop (West)', 'Dark Death Mountain (West Bottom)'),
|
||||
('East Death Mountain (Top) Mirror Spot', 'East Death Mountain (Top)'),
|
||||
('Turtle Rock Teleporter', 'Turtle Rock (Top)'),
|
||||
('Turtle Rock Open Skull', 'Turtle Rock Skull'),
|
||||
('Turtle Rock Skull Reverse', 'Dark Death Mountain (Top)'),
|
||||
('Turtle Rock Skull Mirror Spot', 'Turtle Rock (Top)'),
|
||||
('Turtle Rock Drop', 'Dark Death Mountain (Top)'),
|
||||
('Floating Island Drop', 'Dark Death Mountain (Top)'),
|
||||
('East Death Mountain Teleporter', 'Dark Death Mountain (East Bottom)'),
|
||||
('Isolated Ledge Mirror Spot', 'Fairy Ascension Ledge'),
|
||||
('Spiral Cave Mirror Spot', 'Spiral Cave Ledge'),
|
||||
|
||||
('Palace of Darkness Pay Kiki', 'Palace of Darkness Kiki Door'),
|
||||
('Palace of Darkness Kiki Door Reverse', 'East Dark World'),
|
||||
('Swamp Palace Moat', 'Swamp Palace (First Room)'),
|
||||
('Swamp Palace Small Key Door', 'Swamp Palace (Starting Area)'),
|
||||
('Swamp Palace (Center)', 'Swamp Palace (Center)'),
|
||||
('Swamp Palace (North)', 'Swamp Palace (North)'),
|
||||
('Thieves Town Big Key Door', 'Thieves Town (Deep)'),
|
||||
('Skull Woods Torch Room', 'Skull Woods Final Section (Mothula)'),
|
||||
('Skull Woods Burn Skull', 'Skull Woods Skull'),
|
||||
('Skull Woods Skull Reverse', 'Skull Woods Forest (West)'),
|
||||
('Skull Woods First Section (Right)', 'Skull Woods First Section'), # exist only for unique hole reference points
|
||||
('Skull Woods First Section (Left)', 'Skull Woods First Section'),
|
||||
('Skull Woods First Section (Top)', 'Skull Woods First Section'),
|
||||
|
@ -1474,7 +1467,7 @@ default_dungeon_connections = [('Desert Palace Entrance (South)', 'Desert Palace
|
|||
('Skull Woods Second Section Exit (East)', 'Skull Woods Forest'),
|
||||
('Skull Woods Second Section Exit (West)', 'Skull Woods Forest (West)'),
|
||||
('Skull Woods Final Section', 'Skull Woods Final Section (Entrance)'),
|
||||
('Skull Woods Final Section Exit', 'Skull Woods Skull'),
|
||||
('Skull Woods Final Section Exit', 'Skull Woods Forest (West)'),
|
||||
('Ice Palace', 'Ice Palace (Entrance)'),
|
||||
('Ice Palace Exit', 'Dark Lake Hylia Central Island'),
|
||||
('Misery Mire', 'Misery Mire (Entrance)'),
|
||||
|
|
11
Regions.py
11
Regions.py
|
@ -131,9 +131,8 @@ def create_regions(world):
|
|||
create_region('Tower of Hera (Basement)', ['[dungeon-L3-1F] Tower of Hera - Basement']),
|
||||
create_region('Tower of Hera (Top)', ['[dungeon-L3-1F] Tower of Hera - 4F [small chest]', '[dungeon-L3-1F] Tower of Hera - Big Chest', 'Moldorm - Heart Container', 'Moldorm - Pendant']),
|
||||
|
||||
create_region('East Dark World', ['Piece of Heart (Pyramid)', 'Catfish'], ['Pyramid Fairy', 'South Dark World Bridge', 'West Dark World Gap', 'Palace of Darkness Pay Kiki', 'Dark Lake Hylia Drop (East)', 'Dark Lake Hylia Teleporter',
|
||||
create_region('East Dark World', ['Piece of Heart (Pyramid)', 'Catfish'], ['Pyramid Fairy', 'South Dark World Bridge', 'West Dark World Gap', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)', 'Dark Lake Hylia Teleporter',
|
||||
'Hyrule Castle Ledge Mirror Spot', 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Dark World Potion Shop', 'Pyramid Hole']),
|
||||
create_region('Palace of Darkness Kiki Door', None, ['Palace of Darkness', 'Palace of Darkness Kiki Door Reverse']),
|
||||
create_region('Palace of Darkness Hint'),
|
||||
create_region('East Dark World Hint'),
|
||||
create_region('South Dark World', ['Flute Boy', 'Piece of Heart (Digging Game)', 'Bombos Tablet'], ['Dark Lake Hylia Drop (South)', 'Dark Swamp Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
|
||||
|
@ -162,15 +161,14 @@ def create_regions(world):
|
|||
create_region('Bumper Cave Ledge', ['Piece of Heart (Bumper Cave)'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot']),
|
||||
create_region('Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', 'Skull Woods First Section Door',
|
||||
'Skull Woods Second Section Door (East)']),
|
||||
create_region('Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Burn Skull']),
|
||||
create_region('Skull Woods Skull', None, ['Skull Woods Skull Reverse', 'Skull Woods Final Section']),
|
||||
create_region('Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']),
|
||||
create_region('Dark Desert', None, ['Misery Mire', 'Dark Desert Cave', 'Desert Ledge (West) Mirror Spot', 'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot', 'Desert Palace Entrance (North) Mirror Spot',
|
||||
'Dark Desert Hint', 'Dark Desert Fairy']),
|
||||
create_region('Dark Desert Cave', ['[cave-071] Misery Mire West Area [left chest]', '[cave-071] Misery Mire West Area [right chest]']),
|
||||
create_region('Dark Desert Hint'),
|
||||
create_region('Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy']),
|
||||
create_region('Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (West)', 'Ganons Tower', 'Dark Death Mountain Ascend (Top)', 'Hookshot Cave',
|
||||
'East Death Mountain (Top) Mirror Spot']),
|
||||
'East Death Mountain (Top) Mirror Spot', 'Turtle Rock']),
|
||||
create_region('Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)', 'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot']),
|
||||
create_region('Dark Death Mountain Isolated Ledge', None, ['Isolated Ledge Mirror Spot', 'Turtle Rock Isolated Ledge Entrance']),
|
||||
create_region('Dark Death Mountain (East Bottom)', None, ['Dark Death Mountain Ascend (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Fairy Ascension Mirror Spot']),
|
||||
|
@ -180,8 +178,7 @@ def create_regions(world):
|
|||
create_region('Hookshot Cave', ['[cave-056] Hookshot Cave [top right chest]', '[cave-056] Hookshot Cave [top left chest]', '[cave-056] Hookshot Cave [bottom right chest]', '[cave-056] Hookshot Cave [bottom left chest]'],
|
||||
['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
|
||||
create_region('Death Mountain Floating Island', ['Piece of Heart (Death Mountain - Floating Island)'], ['Floating Island Drop', 'Hookshot Cave Back Entrance']),
|
||||
create_region('Turtle Rock (Top)', None, ['Turtle Rock Open Skull', 'Turtle Rock Drop']),
|
||||
create_region('Turtle Rock Skull', None, ['Turtle Rock', 'Turtle Rock Skull Reverse', 'Turtle Rock Skull Mirror Spot']),
|
||||
create_region('Turtle Rock (Top)', None, ['Turtle Rock Drop']),
|
||||
create_region('Mimic Cave', ['[cave-013] Mimic Cave']),
|
||||
|
||||
create_region('Swamp Palace (Entrance)', None, ['Swamp Palace Moat', 'Swamp Palace Exit']),
|
||||
|
|
13
Rom.py
13
Rom.py
|
@ -272,6 +272,19 @@ def patch_rom(world, rom, hashtable, quickswap=False, beep='normal', sprite=None
|
|||
write_byte(rom, 0xFEE41, 0x0E) # preopen bombable exit
|
||||
write_byte(rom, 0xFE465, 0x1E) # remove small key door on backside of big key door
|
||||
|
||||
# Thanks to Zarby89 for finding these values
|
||||
# fix skull woods exit point
|
||||
if world.fix_skullwoods_exit:
|
||||
write_byte(rom, 0x15E0D, 0xF8)
|
||||
|
||||
# fix palace of darkness exit point
|
||||
if world.fix_palaceofdarkness_exit:
|
||||
write_byte(rom, 0x15E03, 0x40)
|
||||
|
||||
# fix turtle rock exit point
|
||||
if world.fix_trock_exit:
|
||||
write_byte(rom, 0x15E1D, 0x34)
|
||||
|
||||
# enable quick item swapping with L and R (ported by Amazing Ampharos)
|
||||
if quickswap:
|
||||
write_bytes(rom, 0x107fb, [0x22, 0x50, 0xFF, 0x1F])
|
||||
|
|
13
Rules.py
13
Rules.py
|
@ -110,9 +110,6 @@ def global_rules(world):
|
|||
set_rule(world.get_entrance('7 Chest Cave Push Block Reverse'), lambda state: state.has('Mirror')) # can erase block
|
||||
set_rule(world.get_entrance('Death Mountain (Top)'), lambda state: state.has('Hammer'))
|
||||
set_rule(world.get_entrance('Turtle Rock Teleporter'), lambda state: state.can_lift_heavy_rocks() and state.has('Hammer'))
|
||||
set_rule(world.get_entrance('Turtle Rock Skull Mirror Spot'), lambda state: state.has_Mirror() and state.has('Hammer')) # if stuck, can mirror and hammer the pegs
|
||||
set_rule(world.get_entrance('Turtle Rock'), lambda state: state.can_reach('Turtle Rock Open Skull', 'Entrance'))
|
||||
set_rule(world.get_entrance('Turtle Rock Skull Reverse'), lambda state: state.can_reach('Turtle Rock Open Skull', 'Entrance'))
|
||||
set_rule(world.get_location('Ether Tablet'), lambda state: state.has('Book of Mudora') and state.has_beam_sword())
|
||||
set_rule(world.get_entrance('East Death Mountain (Top)'), lambda state: state.has('Hammer'))
|
||||
|
||||
|
@ -124,9 +121,7 @@ def global_rules(world):
|
|||
set_rule(world.get_entrance('South Dark World Bridge'), lambda state: state.has('Hammer') and state.has_Pearl())
|
||||
set_rule(world.get_entrance('Bonk Fairy (Dark)'), lambda state: state.has_Boots())
|
||||
set_rule(world.get_entrance('West Dark World Gap'), lambda state: state.has_Pearl() and state.has('Hookshot') and (state.has('Flippers') or state.has('Hammer') or state.can_lift_rocks()))
|
||||
set_rule(world.get_entrance('Palace of Darkness Pay Kiki'), lambda state: state.has_Pearl())
|
||||
set_rule(world.get_entrance('Palace of Darkness'), lambda state: state.can_reach('Palace of Darkness Pay Kiki', 'Entrance'))
|
||||
set_rule(world.get_entrance('Palace of Darkness Kiki Door Reverse'), lambda state: state.can_reach('Palace of Darkness Pay Kiki', 'Entrance')) # prevent soft lock when coming from behind, not required
|
||||
set_rule(world.get_entrance('Palace of Darkness'), lambda state: state.has_Pearl())
|
||||
set_rule(world.get_entrance('Hyrule Castle Ledge Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Dark Lake Hylia Drop (East)'), lambda state: (state.has_Pearl() and state.has('Flippers') or state.has_Mirror())) # Overworld Bunny Revival
|
||||
set_rule(world.get_location('Bombos Tablet'), lambda state: state.has('Book of Mudora') and state.has_beam_sword() and state.has_Mirror())
|
||||
|
@ -149,9 +144,7 @@ def global_rules(world):
|
|||
set_rule(world.get_entrance('Dark World Shop'), lambda state: state.has('Hammer'))
|
||||
set_rule(world.get_entrance('Bumper Cave Exit (Top)'), lambda state: state.has('Cape'))
|
||||
set_rule(world.get_entrance('Bumper Cave Exit (Bottom)'), lambda state: state.has('Cape') or state.has('Hookshot'))
|
||||
set_rule(world.get_entrance('Skull Woods Burn Skull'), lambda state: state.has('Fire Rod'))
|
||||
set_rule(world.get_entrance('Skull Woods Final Section'), lambda state: state.can_reach('Skull Woods Burn Skull', 'Entrance')) # prevent soft lock when coming from behind, not required
|
||||
set_rule(world.get_entrance('Skull Woods Skull Reverse'), lambda state: state.can_reach('Skull Woods Burn Skull', 'Entrance'))
|
||||
set_rule(world.get_entrance('Skull Woods Final Section'), lambda state: state.has('Fire Rod'))
|
||||
set_rule(world.get_entrance('Misery Mire'), lambda state: state.has_Pearl() and state.has_sword() and state.has_misery_mire_medallion()) # sword required to cast magic (!)
|
||||
set_rule(world.get_entrance('Desert Ledge (West) Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Desert Ledge Mirror Spot'), lambda state: state.has_Mirror())
|
||||
|
@ -180,7 +173,7 @@ def global_rules(world):
|
|||
set_rule(world.get_location('[cave-056] Hookshot Cave [bottom right chest]'), lambda state: state.has('Hookshot') or state.has('Pegasus Boots'))
|
||||
set_rule(world.get_location('[cave-056] Hookshot Cave [bottom left chest]'), lambda state: state.has('Hookshot'))
|
||||
set_rule(world.get_location('Piece of Heart (Death Mountain - Floating Island)'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Turtle Rock'), lambda state: state.has_Pearl() and state.has_sword() and state.has_turtle_rock_medallion()) # sword required to cast magic (!)
|
||||
set_rule(world.get_entrance('Turtle Rock'), lambda state: state.has_Pearl() and state.has_sword() and state.has_turtle_rock_medallion() and state.can_reach('Turtle Rock (Top)', 'Region')) # sword required to cast magic (!)
|
||||
set_rule(world.get_location('[cave-013] Mimic Cave'), lambda state: state.has('Hammer'))
|
||||
|
||||
set_rule(world.get_entrance('Sewers Door'), lambda state: state.has('Small Key (Escape)'))
|
||||
|
|
Loading…
Reference in New Issue