Additional v30 updates
This commit is contained in:
parent
d68a0865c8
commit
54926a17f4
|
@ -24,7 +24,7 @@ def main():
|
|||
''')
|
||||
parser.add_argument('--quickswap', help='Enable quick item swapping with L and R.', action='store_true')
|
||||
parser.add_argument('--disablemusic', help='Disables game music.', action='store_true')
|
||||
parser.add_argument('--heartbeep', default='normal', const='normal', nargs='?', choices=['normal', 'half', 'quarter', 'off'],
|
||||
parser.add_argument('--heartbeep', default='normal', const='normal', nargs='?', choices=['double', 'normal', 'half', 'quarter', 'off'],
|
||||
help='''\
|
||||
Select the rate at which the heart beep sound is played at
|
||||
low health. (default: %(default)s)
|
||||
|
|
|
@ -150,7 +150,7 @@ dungeon_music_addresses = {'Eastern Palace - Prize': [0x1559A],
|
|||
'Tower of Hera - Prize': [0x155C5, 0x1107A, 0x10B8C],
|
||||
'Palace of Darkness - Prize': [0x155B8],
|
||||
'Swamp Palace - Prize': [0x155B7],
|
||||
'Thieves Town - Prize': [0x155C6],
|
||||
'Thieves\' Town - Prize': [0x155C6],
|
||||
'Skull Woods - Prize': [0x155BA, 0x155BB, 0x155BC, 0x155BD, 0x15608, 0x15609, 0x1560A, 0x1560B],
|
||||
'Ice Palace - Prize': [0x155BF],
|
||||
'Misery Mire - Prize': [0x155B9],
|
||||
|
|
|
@ -188,7 +188,7 @@ def start():
|
|||
If set, the Pyramid Hole and Ganon's Tower are not
|
||||
included entrance shuffle pool.
|
||||
''', action='store_false', dest='shuffleganon')
|
||||
parser.add_argument('--heartbeep', default='normal', const='normal', nargs='?', choices=['normal', 'half', 'quarter', 'off'],
|
||||
parser.add_argument('--heartbeep', default='normal', const='normal', nargs='?', choices=['double', 'normal', 'half', 'quarter', 'off'],
|
||||
help='''\
|
||||
Select the rate at which the heart beep sound is played at
|
||||
low health. (default: %(default)s)
|
||||
|
|
4
Gui.py
4
Gui.py
|
@ -205,7 +205,7 @@ def guiMain(args=None):
|
|||
heartbeepFrame = Frame(drowDownFrame)
|
||||
heartbeepVar = StringVar()
|
||||
heartbeepVar.set('normal')
|
||||
heartbeepOptionMenu = OptionMenu(heartbeepFrame, heartbeepVar, 'normal', 'half', 'quarter', 'off')
|
||||
heartbeepOptionMenu = OptionMenu(heartbeepFrame, heartbeepVar, 'double', 'normal', 'half', 'quarter', 'off')
|
||||
heartbeepOptionMenu.pack(side=RIGHT)
|
||||
heartbeepLabel = Label(heartbeepFrame, text='Heartbeep sound rate')
|
||||
heartbeepLabel.pack(side=LEFT)
|
||||
|
@ -361,7 +361,7 @@ def guiMain(args=None):
|
|||
|
||||
drowDownFrame2 = Frame(topFrame2)
|
||||
heartbeepFrame2 = Frame(drowDownFrame2)
|
||||
heartbeepOptionMenu2 = OptionMenu(heartbeepFrame2, heartbeepVar, 'normal', 'half', 'quarter', 'off')
|
||||
heartbeepOptionMenu2 = OptionMenu(heartbeepFrame2, heartbeepVar, 'double', 'normal', 'half', 'quarter', 'off')
|
||||
heartbeepOptionMenu2.pack(side=RIGHT)
|
||||
heartbeepLabel2 = Label(heartbeepFrame2, text='Heartbeep sound rate')
|
||||
heartbeepLabel2.pack(side=LEFT)
|
||||
|
|
|
@ -348,7 +348,7 @@ def create_dynamic_shop_locations(world):
|
|||
def fill_prizes(world, attempts=15):
|
||||
crystals = ItemFactory(['Red Pendant', 'Blue Pendant', 'Green Pendant', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 7', 'Crystal 5', 'Crystal 6'])
|
||||
crystal_locations = [world.get_location('Turtle Rock - Prize'), world.get_location('Eastern Palace - Prize'), world.get_location('Desert Palace - Prize'), world.get_location('Tower of Hera - Prize'), world.get_location('Palace of Darkness - Prize'),
|
||||
world.get_location('Thieves Town - Prize'), world.get_location('Skull Woods - Prize'), world.get_location('Swamp Palace - Prize'), world.get_location('Ice Palace - Prize'),
|
||||
world.get_location('Thieves\' Town - Prize'), world.get_location('Skull Woods - Prize'), world.get_location('Swamp Palace - Prize'), world.get_location('Ice Palace - Prize'),
|
||||
world.get_location('Misery Mire - Prize')]
|
||||
placed_prizes = [loc.item.name for loc in crystal_locations if loc.item is not None]
|
||||
unplaced_prizes = [crystal for crystal in crystals if crystal.name not in placed_prizes]
|
||||
|
@ -376,6 +376,9 @@ def set_up_shops(world):
|
|||
# Changes to basic Shops
|
||||
# TODO: move hard+ mode changes for sheilds here, utilizing the new shops
|
||||
|
||||
for shop in world.shops:
|
||||
shop.active = True
|
||||
|
||||
if world.retro:
|
||||
rss = world.get_region('Red Shield Shop').shop
|
||||
rss.active = True
|
||||
|
|
|
@ -71,14 +71,14 @@ Desert Palace - Torch: Small Key (Desert Palace)
|
|||
Desert Palace - Map Chest: Nothing
|
||||
Desert Palace - Compass Chest: Nothing
|
||||
Desert Palace - Big Key Chest: Big Key (Desert Palace)
|
||||
Desert Palace - Lanmolas: Nothing
|
||||
Desert Palace - Boss: Nothing
|
||||
Desert Palace - Prize: Blue Pendant
|
||||
Eastern Palace - Compass Chest: Nothing
|
||||
Eastern Palace - Big Chest: Bow
|
||||
Eastern Palace - Cannonball Chest: Nothing
|
||||
Eastern Palace - Big Key Chest: Big Key (Eastern Palace)
|
||||
Eastern Palace - Map Chest: Nothing
|
||||
Eastern Palace - Armos Knights: Nothing
|
||||
Eastern Palace - Boss: Nothing
|
||||
Eastern Palace - Prize: Green Pendant
|
||||
Master Sword Pedestal: Master Sword
|
||||
Hyrule Castle - Boomerang Chest: Nothing
|
||||
|
@ -108,7 +108,7 @@ Tower of Hera - Map Chest: Nothing
|
|||
Tower of Hera - Big Key Chest: Big Key (Tower of Hera)
|
||||
Tower of Hera - Compass Chest: Nothing
|
||||
Tower of Hera - Big Chest: Moon Pearl
|
||||
Tower of Hera - Moldorm: Nothing
|
||||
Tower of Hera - Boss: Nothing
|
||||
Tower of Hera - Prize: Red Pendant
|
||||
Pyramid: Nothing
|
||||
Catfish: Quake
|
||||
|
@ -147,7 +147,7 @@ Swamp Palace - West Chest: Nothing
|
|||
Swamp Palace - Flooded Room - Left: Nothing
|
||||
Swamp Palace - Flooded Room - Right: Nothing
|
||||
Swamp Palace - Waterfall Room: Nothing
|
||||
Swamp Palace - Arrghus: Nothing
|
||||
Swamp Palace - Boss: Nothing
|
||||
Swamp Palace - Prize: Crystal 2
|
||||
Thieves' Town - Big Key Chest: Big Key (Thieves Town)
|
||||
Thieves' Town - Map Chest: Nothing
|
||||
|
@ -156,8 +156,8 @@ Thieves' Town - Ambush Chest: Nothing
|
|||
Thieves' Town - Attic: Nothing
|
||||
Thieves' Town - Big Chest: Titans Mitts
|
||||
Thieves' Town - Blind's Cell: Small Key (Thieves Town)
|
||||
Thieves Town - Blind: Nothing
|
||||
Thieves Town - Prize: Crystal 4
|
||||
Thieves' Town - Boss: Nothing
|
||||
Thieves' Town - Prize: Crystal 4
|
||||
Skull Woods - Compass Chest: Nothing
|
||||
Skull Woods - Map Chest: Nothing
|
||||
Skull Woods - Big Chest: Fire Rod
|
||||
|
@ -165,7 +165,7 @@ Skull Woods - Pot Prison: Small Key (Skull Woods)
|
|||
Skull Woods - Pinball Room: Small Key (Skull Woods)
|
||||
Skull Woods - Big Key Chest: Big Key (Skull Woods)
|
||||
Skull Woods - Bridge Room: Small Key (Skull Woods)
|
||||
Skull Woods - Mothula: Nothing
|
||||
Skull Woods - Boss: Nothing
|
||||
Skull Woods - Prize: Crystal 3
|
||||
Ice Palace - Compass Chest: Nothing
|
||||
Ice Palace - Freezor Chest: Nothing
|
||||
|
@ -174,7 +174,7 @@ Ice Palace - Iced T Room: Small Key (Ice Palace)
|
|||
Ice Palace - Spike Room: Small Key (Ice Palace)
|
||||
Ice Palace - Big Key Chest: Big Key (Ice Palace)
|
||||
Ice Palace - Map Chest: Nothing
|
||||
Ice Palace - Kholdstare: Nothing
|
||||
Ice Palace - Boss: Nothing
|
||||
Ice Palace - Prize: Crystal 5
|
||||
Misery Mire - Big Chest: Cane of Somaria
|
||||
Misery Mire - Map Chest: Nothing
|
||||
|
@ -183,7 +183,7 @@ Misery Mire - Bridge Chest: Small Key (Misery Mire)
|
|||
Misery Mire - Spike Chest: Small Key (Misery Mire)
|
||||
Misery Mire - Compass Chest: Nothing
|
||||
Misery Mire - Big Key Chest: Big Key (Misery Mire)
|
||||
Misery Mire - Vitreous: Nothing
|
||||
Misery Mire - Boss: Nothing
|
||||
Misery Mire - Prize: Crystal 6
|
||||
Turtle Rock - Compass Chest: Nothing
|
||||
Turtle Rock - Roller Room - Left: Nothing
|
||||
|
@ -196,7 +196,7 @@ Turtle Rock - Eye Bridge - Bottom Left: Small Key (Turtle Rock)
|
|||
Turtle Rock - Eye Bridge - Bottom Right: Nothing
|
||||
Turtle Rock - Eye Bridge - Top Left: Nothing
|
||||
Turtle Rock - Eye Bridge - Top Right: Nothing
|
||||
Turtle Rock - Trinexx: Nothing
|
||||
Turtle Rock - Boss: Nothing
|
||||
Turtle Rock - Prize: Crystal 7
|
||||
Palace of Darkness - Shooter Room: Small Key (Palace of Darkness)
|
||||
Palace of Darkness - The Arena - Bridge: Small Key (Palace of Darkness)
|
||||
|
@ -212,7 +212,7 @@ Palace of Darkness - Dark Maze - Top: Nothing
|
|||
Palace of Darkness - Dark Maze - Bottom: Nothing
|
||||
Palace of Darkness - Big Chest: Hammer
|
||||
Palace of Darkness - Harmless Hellway: Nothing
|
||||
Palace of Darkness - Helmasaur: Nothing
|
||||
Palace of Darkness - Boss: Nothing
|
||||
Palace of Darkness - Prize: Crystal 1
|
||||
Ganons Tower - Bob's Torch: Small Key (Ganons Tower)
|
||||
Ganons Tower - Hope Room - Left: Nothing
|
||||
|
|
44
Regions.py
44
Regions.py
|
@ -98,9 +98,9 @@ def create_regions(world):
|
|||
['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)', 'Desert Palace East Wing']),
|
||||
create_dungeon_region('Desert Palace Main (Inner)', None, ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
|
||||
create_dungeon_region('Desert Palace East', ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
|
||||
create_dungeon_region('Desert Palace North', ['Desert Palace - Lanmolas', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
|
||||
create_dungeon_region('Desert Palace North', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
|
||||
create_dungeon_region('Eastern Palace', ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest', 'Eastern Palace - Cannonball Chest',
|
||||
'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Armos Knights', 'Eastern Palace - Prize'], ['Eastern Palace Exit']),
|
||||
'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss', 'Eastern Palace - Prize'], ['Eastern Palace Exit']),
|
||||
create_lw_region('Master Sword Meadow', ['Master Sword Pedestal']),
|
||||
create_cave_region('Lost Woods Gamble'),
|
||||
create_lw_region('Hyrule Castle Courtyard', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (South)']),
|
||||
|
@ -147,7 +147,7 @@ def create_regions(world):
|
|||
create_lw_region('Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop']),
|
||||
create_dungeon_region('Tower of Hera (Bottom)', ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
|
||||
create_dungeon_region('Tower of Hera (Basement)', ['Tower of Hera - Big Key Chest']),
|
||||
create_dungeon_region('Tower of Hera (Top)', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Moldorm', 'Tower of Hera - Prize']),
|
||||
create_dungeon_region('Tower of Hera (Top)', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss', 'Tower of Hera - Prize']),
|
||||
|
||||
create_dw_region('East Dark World', ['Pyramid'], ['Pyramid Fairy', 'South Dark World Bridge', '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', 'Pyramid Hole', 'Northeast Dark World Broken Bridge Pass']),
|
||||
|
@ -214,7 +214,7 @@ def create_regions(world):
|
|||
create_dungeon_region('Swamp Palace (Center)', ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
|
||||
'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
|
||||
create_dungeon_region('Swamp Palace (North)', ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
|
||||
'Swamp Palace - Waterfall Room', 'Swamp Palace - Arrghus', 'Swamp Palace - Prize']),
|
||||
'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
|
||||
create_dungeon_region('Thieves Town (Entrance)', ['Thieves\' Town - Big Key Chest',
|
||||
'Thieves\' Town - Map Chest',
|
||||
'Thieves\' Town - Compass Chest',
|
||||
|
@ -222,7 +222,7 @@ def create_regions(world):
|
|||
create_dungeon_region('Thieves Town (Deep)', ['Thieves\' Town - Attic',
|
||||
'Thieves\' Town - Big Chest',
|
||||
'Thieves\' Town - Blind\'s Cell'], ['Blind Fight']),
|
||||
create_dungeon_region('Blind Fight', ['Thieves Town - Blind', 'Thieves Town - Prize']),
|
||||
create_dungeon_region('Blind Fight', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
|
||||
create_dungeon_region('Skull Woods First Section', ['Skull Woods - Map Chest'], ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump', 'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
|
||||
create_dungeon_region('Skull Woods First Section (Right)', ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
|
||||
create_dungeon_region('Skull Woods First Section (Left)', ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'], ['Skull Woods First Section (Left) Door to Exit', 'Skull Woods First Section (Left) Door to Right']),
|
||||
|
@ -230,19 +230,19 @@ def create_regions(world):
|
|||
create_dungeon_region('Skull Woods Second Section (Drop)', None, ['Skull Woods Second Section (Drop)']),
|
||||
create_dungeon_region('Skull Woods Second Section', ['Skull Woods - Big Key Chest'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
|
||||
create_dungeon_region('Skull Woods Final Section (Entrance)', ['Skull Woods - Bridge Room'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
|
||||
create_dungeon_region('Skull Woods Final Section (Mothula)', ['Skull Woods - Mothula', 'Skull Woods - Prize']),
|
||||
create_dungeon_region('Skull Woods Final Section (Mothula)', ['Skull Woods - Boss', 'Skull Woods - Prize']),
|
||||
create_dungeon_region('Ice Palace (Entrance)', None, ['Ice Palace Entrance Room', 'Ice Palace Exit']),
|
||||
create_dungeon_region('Ice Palace (Main)', ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
|
||||
'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
|
||||
create_dungeon_region('Ice Palace (East)', ['Ice Palace - Spike Room'], ['Ice Palace (East Top)']),
|
||||
create_dungeon_region('Ice Palace (East Top)', ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
|
||||
create_dungeon_region('Ice Palace (Kholdstare)', ['Ice Palace - Kholdstare', 'Ice Palace - Prize']),
|
||||
create_dungeon_region('Ice Palace (Kholdstare)', ['Ice Palace - Boss', 'Ice Palace - Prize']),
|
||||
create_dungeon_region('Misery Mire (Entrance)', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
|
||||
create_dungeon_region('Misery Mire (Main)', ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
|
||||
'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'], ['Misery Mire (West)', 'Misery Mire Big Key Door']),
|
||||
create_dungeon_region('Misery Mire (West)', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
|
||||
create_dungeon_region('Misery Mire (Final Area)', None, ['Misery Mire (Vitreous)']),
|
||||
create_dungeon_region('Misery Mire (Vitreous)', ['Misery Mire - Vitreous', 'Misery Mire - Prize']),
|
||||
create_dungeon_region('Misery Mire (Vitreous)', ['Misery Mire - Boss', 'Misery Mire - Prize']),
|
||||
create_dungeon_region('Turtle Rock (Entrance)', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
|
||||
create_dungeon_region('Turtle Rock (First Section)', ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
|
||||
'Turtle Rock - Roller Room - Right'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
|
||||
|
@ -254,7 +254,7 @@ def create_regions(world):
|
|||
create_dungeon_region('Turtle Rock (Eye Bridge)', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
|
||||
'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
|
||||
['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)', 'Turtle Rock Isolated Ledge Exit']),
|
||||
create_dungeon_region('Turtle Rock (Trinexx)', ['Turtle Rock - Trinexx', 'Turtle Rock - Prize']),
|
||||
create_dungeon_region('Turtle Rock (Trinexx)', ['Turtle Rock - Boss', 'Turtle Rock - Prize']),
|
||||
create_dungeon_region('Palace of Darkness (Entrance)', ['Palace of Darkness - Shooter Room'], ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall', 'Palace of Darkness Exit']),
|
||||
create_dungeon_region('Palace of Darkness (Center)', ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
|
||||
['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)', 'Palace of Darkness Big Key Door']),
|
||||
|
@ -264,7 +264,7 @@ def create_regions(world):
|
|||
['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
|
||||
create_dungeon_region('Palace of Darkness (Maze)', ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Big Chest']),
|
||||
create_dungeon_region('Palace of Darkness (Harmless Hellway)', ['Palace of Darkness - Harmless Hellway']),
|
||||
create_dungeon_region('Palace of Darkness (Final Section)', ['Palace of Darkness - Helmasaur', 'Palace of Darkness - Prize']),
|
||||
create_dungeon_region('Palace of Darkness (Final Section)', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
|
||||
create_dungeon_region('Ganons Tower (Entrance)', ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left', 'Ganons Tower - Hope Room - Right'],
|
||||
['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door', 'Ganons Tower Exit']),
|
||||
create_dungeon_region('Ganons Tower (Tile Room)', ['Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']),
|
||||
|
@ -301,6 +301,8 @@ def create_regions(world):
|
|||
|
||||
region = world.get_region('Capacity Upgrade')
|
||||
shop = Shop(region, 0x0115, ShopType.UpgradeShop, 0x04, True)
|
||||
region.shop = shop
|
||||
world.shops.append(shop)
|
||||
shop.add_inventory(0, 'Bomb Upgrade (+5)', 100, 7)
|
||||
shop.add_inventory(1, 'Arrow Upgrade (+5)', 100, 7)
|
||||
world.intialize_regions()
|
||||
|
@ -450,13 +452,13 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Desert Palace - Map Chest': (0xE9B6, False, 'in Desert Palace'),
|
||||
'Desert Palace - Compass Chest': (0xE9CB, False, 'in Desert Palace'),
|
||||
'Desert Palace - Big Key Chest': (0xE9C2, False, 'in Desert Palace'),
|
||||
'Desert Palace - Lanmolas': (0x180151, False, 'with Lanmolas'),
|
||||
'Desert Palace - Boss': (0x180151, False, 'with Lanmolas'),
|
||||
'Eastern Palace - Compass Chest': (0xE977, False, 'in Eastern Palace'),
|
||||
'Eastern Palace - Big Chest': (0xE97D, False, 'in Eastern Palace'),
|
||||
'Eastern Palace - Cannonball Chest': (0xE9B3, False, 'in Eastern Palace'),
|
||||
'Eastern Palace - Big Key Chest': (0xE9B9, False, 'in Eastern Palace'),
|
||||
'Eastern Palace - Map Chest': (0xE9F5, False, 'in Eastern Palace'),
|
||||
'Eastern Palace - Armos Knights': (0x180150, False, 'with the Armos'),
|
||||
'Eastern Palace - Boss': (0x180150, False, 'with the Armos'),
|
||||
'Master Sword Pedestal': (0x289B0, False, 'at the pedestal'),
|
||||
'Hyrule Castle - Boomerang Chest': (0xE974, False, 'in Hyrule Castle'),
|
||||
'Hyrule Castle - Map Chest': (0xEB0C, False, 'in Hyrule Castle'),
|
||||
|
@ -485,7 +487,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Tower of Hera - Big Key Chest': (0xE9E6, False, 'in Tower of Hera'),
|
||||
'Tower of Hera - Compass Chest': (0xE9FB, False, 'in Tower of Hera'),
|
||||
'Tower of Hera - Big Chest': (0xE9F8, False, 'in Tower of Hera'),
|
||||
'Tower of Hera - Moldorm': (0x180152, False, 'with Moldorm'),
|
||||
'Tower of Hera - Boss': (0x180152, False, 'with Moldorm'),
|
||||
'Pyramid': (0x180147, False, 'on the pyramid'),
|
||||
'Catfish': (0xEE185, False, 'with a fish'),
|
||||
'Stumpy': (0x330C7, False, 'with tree boy'),
|
||||
|
@ -523,7 +525,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Swamp Palace - Flooded Room - Left': (0xEAA9, False, 'in Swamp Palace'),
|
||||
'Swamp Palace - Flooded Room - Right': (0xEAAC, False, 'in Swamp Palace'),
|
||||
'Swamp Palace - Waterfall Room': (0xEAAF, False, 'in Swamp Palace'),
|
||||
'Swamp Palace - Arrghus': (0x180154, False, 'with Arrghus'),
|
||||
'Swamp Palace - Boss': (0x180154, False, 'with Arrghus'),
|
||||
'Thieves\' Town - Big Key Chest': (0xEA04, False, 'in Thieves\' Town'),
|
||||
'Thieves\' Town - Map Chest': (0xEA01, False, 'in Thieves\' Town'),
|
||||
'Thieves\' Town - Compass Chest': (0xEA07, False, 'in Thieves\' Town'),
|
||||
|
@ -531,7 +533,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Thieves\' Town - Attic': (0xEA0D, False, 'in Thieves\' Town'),
|
||||
'Thieves\' Town - Big Chest': (0xEA10, False, 'in Thieves\' Town'),
|
||||
'Thieves\' Town - Blind\'s Cell': (0xEA13, False, 'in Thieves\' Town'),
|
||||
'Thieves Town - Blind': (0x180156, False, 'with Blind'),
|
||||
'Thieves\' Town - Boss': (0x180156, False, 'with Blind'),
|
||||
'Skull Woods - Compass Chest': (0xE992, False, 'in Skull Woods'),
|
||||
'Skull Woods - Map Chest': (0xE99B, False, 'in Skull Woods'),
|
||||
'Skull Woods - Big Chest': (0xE998, False, 'in Skull Woods'),
|
||||
|
@ -539,7 +541,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Skull Woods - Pinball Room': (0xE9C8, False, 'in Skull Woods'),
|
||||
'Skull Woods - Big Key Chest': (0xE99E, False, 'in Skull Woods'),
|
||||
'Skull Woods - Bridge Room': (0xE9FE, False, 'near Mothula'),
|
||||
'Skull Woods - Mothula': (0x180155, False, 'with Mothula'),
|
||||
'Skull Woods - Boss': (0x180155, False, 'with Mothula'),
|
||||
'Ice Palace - Compass Chest': (0xE9D4, False, 'in Ice Palace'),
|
||||
'Ice Palace - Freezor Chest': (0xE995, False, 'in Ice Palace'),
|
||||
'Ice Palace - Big Chest': (0xE9AA, False, 'in Ice Palace'),
|
||||
|
@ -547,7 +549,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Ice Palace - Spike Room': (0xE9E0, False, 'in Ice Palace'),
|
||||
'Ice Palace - Big Key Chest': (0xE9A4, False, 'in Ice Palace'),
|
||||
'Ice Palace - Map Chest': (0xE9DD, False, 'in Ice Palace'),
|
||||
'Ice Palace - Kholdstare': (0x180157, False, 'with Kholdstare'),
|
||||
'Ice Palace - Boss': (0x180157, False, 'with Kholdstare'),
|
||||
'Misery Mire - Big Chest': (0xEA67, False, 'in Misery Mire'),
|
||||
'Misery Mire - Map Chest': (0xEA6A, False, 'in Misery Mire'),
|
||||
'Misery Mire - Main Lobby': (0xEA5E, False, 'in Misery Mire'),
|
||||
|
@ -555,7 +557,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Misery Mire - Spike Chest': (0xE9DA, False, 'in Misery Mire'),
|
||||
'Misery Mire - Compass Chest': (0xEA64, False, 'in Misery Mire'),
|
||||
'Misery Mire - Big Key Chest': (0xEA6D, False, 'in Misery Mire'),
|
||||
'Misery Mire - Vitreous': (0x180158, False, 'with Vitreous'),
|
||||
'Misery Mire - Boss': (0x180158, False, 'with Vitreous'),
|
||||
'Turtle Rock - Compass Chest': (0xEA22, False, 'in Turtle Rock'),
|
||||
'Turtle Rock - Roller Room - Left': (0xEA1C, False, 'in Turtle Rock'),
|
||||
'Turtle Rock - Roller Room - Right': (0xEA1F, False, 'in Turtle Rock'),
|
||||
|
@ -567,7 +569,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Turtle Rock - Eye Bridge - Bottom Right': (0xEA2E, False, 'in Turtle Rock'),
|
||||
'Turtle Rock - Eye Bridge - Top Left': (0xEA2B, False, 'in Turtle Rock'),
|
||||
'Turtle Rock - Eye Bridge - Top Right': (0xEA28, False, 'in Turtle Rock'),
|
||||
'Turtle Rock - Trinexx': (0x180159, False, 'with Trinexx'),
|
||||
'Turtle Rock - Boss': (0x180159, False, 'with Trinexx'),
|
||||
'Palace of Darkness - Shooter Room': (0xEA5B, False, 'in Palace of Darkness'),
|
||||
'Palace of Darkness - The Arena - Bridge': (0xEA3D, False, 'in Palace of Darkness'),
|
||||
'Palace of Darkness - Stalfos Basement': (0xEA49, False, 'in Palace of Darkness'),
|
||||
|
@ -581,7 +583,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Palace of Darkness - Dark Maze - Bottom': (0xEA58, False, 'in Palace of Darkness'),
|
||||
'Palace of Darkness - Big Chest': (0xEA40, False, 'in Palace of Darkness'),
|
||||
'Palace of Darkness - Harmless Hellway': (0xEA46, False, 'in Palace of Darkness'),
|
||||
'Palace of Darkness - Helmasaur': (0x180153, False, 'with Helmasaur King'),
|
||||
'Palace of Darkness - Boss': (0x180153, False, 'with Helmasaur King'),
|
||||
'Ganons Tower - Bob\'s Torch': (0x180161, False, 'on my torch'),
|
||||
'Ganons Tower - Hope Room - Left': (0xEAD9, False, 'in My Tower'),
|
||||
'Ganons Tower - Hope Room - Right': (0xEADC, False, 'in My Tower'),
|
||||
|
@ -621,7 +623,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Tower of Hera - Prize': ([0x120A5, 0x53F0A, 0x53F0B, 0x18005A, 0x18007A, 0xC706], True, 'Tower of Hera'),
|
||||
'Palace of Darkness - Prize': ([0x120A1, 0x53F00, 0x53F01, 0x180056, 0x18007D, 0xC702], True, 'Palace of Darkness'),
|
||||
'Swamp Palace - Prize': ([0x120A0, 0x53F6C, 0x53F6D, 0x180055, 0x180071, 0xC701], True, 'Swamp Palace'),
|
||||
'Thieves Town - Prize': ([0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707], True, 'Thieves\' Town'),
|
||||
'Thieves\' Town - Prize': ([0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707], True, 'Thieves\' Town'),
|
||||
'Skull Woods - Prize': ([0x120A3, 0x53F12, 0x53F13, 0x180058, 0x18007B, 0xC704], True, 'Skull Woods'),
|
||||
'Ice Palace - Prize': ([0x120A4, 0x53F5A, 0x53F5B, 0x180059, 0x180073, 0xC705], True, 'Ice Palace'),
|
||||
'Misery Mire - Prize': ([0x120A2, 0x53F48, 0x53F49, 0x180057, 0x180075, 0xC703], True, 'Misery Mire'),
|
||||
|
|
2
Rom.py
2
Rom.py
|
@ -975,7 +975,7 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr
|
|||
rom.write_byte(0xD3DAA, 0xFA)
|
||||
|
||||
# set heart beep rate
|
||||
rom.write_byte(0x180033, {'off': 0x00, 'half': 0x40, 'quarter': 0x80, 'normal': 0x20}[beep])
|
||||
rom.write_byte(0x180033, {'off': 0x00, 'half': 0x40, 'quarter': 0x80, 'normal': 0x20, 'double': 0x10}[beep])
|
||||
|
||||
# set heart color
|
||||
rom.write_byte(0x6FA1E, {'red': 0x24, 'blue': 0x2C, 'green': 0x3C, 'yellow': 0x28}[color])
|
||||
|
|
46
Rules.py
46
Rules.py
|
@ -233,20 +233,20 @@ def global_rules(world):
|
|||
set_rule(world.get_entrance('Sewers Back Door'), lambda state: state.has_key('Small Key (Escape)'))
|
||||
|
||||
set_rule(world.get_location('Eastern Palace - Big Chest'), lambda state: state.has('Big Key (Eastern Palace)'))
|
||||
set_rule(world.get_location('Eastern Palace - Armos Knights'), lambda state: state.can_shoot_arrows() and state.has('Big Key (Eastern Palace)') and world.get_location('Eastern Palace - Armos Knights').parent_region.dungeon.boss.can_defeat(state))
|
||||
set_rule(world.get_location('Eastern Palace - Boss'), lambda state: state.can_shoot_arrows() and state.has('Big Key (Eastern Palace)') and world.get_location('Eastern Palace - Boss').parent_region.dungeon.boss.can_defeat(state))
|
||||
set_rule(world.get_location('Eastern Palace - Prize'), lambda state: state.can_shoot_arrows() and state.has('Big Key (Eastern Palace)') and world.get_location('Eastern Palace - Prize').parent_region.dungeon.boss.can_defeat(state))
|
||||
for location in ['Eastern Palace - Armos Knights', 'Eastern Palace - Big Chest']:
|
||||
for location in ['Eastern Palace - Boss', 'Eastern Palace - Big Chest']:
|
||||
forbid_item(world.get_location(location), 'Big Key (Eastern Palace)')
|
||||
|
||||
set_rule(world.get_location('Desert Palace - Big Chest'), lambda state: state.has('Big Key (Desert Palace)'))
|
||||
set_rule(world.get_location('Desert Palace - Torch'), lambda state: state.has_Boots())
|
||||
set_rule(world.get_entrance('Desert Palace East Wing'), lambda state: state.has_key('Small Key (Desert Palace)'))
|
||||
set_rule(world.get_location('Desert Palace - Prize'), lambda state: state.has_key('Small Key (Desert Palace)') and state.has('Big Key (Desert Palace)') and state.has_fire_source() and world.get_location('Desert Palace - Prize').parent_region.dungeon.boss.can_defeat(state))
|
||||
set_rule(world.get_location('Desert Palace - Lanmolas'), lambda state: state.has_key('Small Key (Desert Palace)') and state.has('Big Key (Desert Palace)') and state.has_fire_source() and world.get_location('Desert Palace - Lanmolas').parent_region.dungeon.boss.can_defeat(state))
|
||||
for location in ['Desert Palace - Lanmolas', 'Desert Palace - Big Chest']:
|
||||
set_rule(world.get_location('Desert Palace - Boss'), lambda state: state.has_key('Small Key (Desert Palace)') and state.has('Big Key (Desert Palace)') and state.has_fire_source() and world.get_location('Desert Palace - Boss').parent_region.dungeon.boss.can_defeat(state))
|
||||
for location in ['Desert Palace - Boss', 'Desert Palace - Big Chest']:
|
||||
forbid_item(world.get_location(location), 'Big Key (Desert Palace)')
|
||||
|
||||
for location in ['Desert Palace - Lanmolas', 'Desert Palace - Big Key Chest', 'Desert Palace - Compass Chest']:
|
||||
for location in ['Desert Palace - Boss', 'Desert Palace - Big Key Chest', 'Desert Palace - Compass Chest']:
|
||||
forbid_item(world.get_location(location), 'Small Key (Desert Palace)')
|
||||
|
||||
set_rule(world.get_entrance('Tower of Hera Small Key Door'), lambda state: state.has_key('Small Key (Tower of Hera)') or item_name(state, 'Tower of Hera - Big Key Chest') == 'Small Key (Tower of Hera)')
|
||||
|
@ -254,9 +254,9 @@ def global_rules(world):
|
|||
set_rule(world.get_location('Tower of Hera - Big Chest'), lambda state: state.has('Big Key (Tower of Hera)'))
|
||||
set_rule(world.get_location('Tower of Hera - Big Key Chest'), lambda state: state.has_fire_source())
|
||||
set_always_allow(world.get_location('Tower of Hera - Big Key Chest'), lambda state, item: item.name == 'Small Key (Tower of Hera)')
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Tower of Hera - Moldorm'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Tower of Hera - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Tower of Hera - Prize'))
|
||||
for location in ['Tower of Hera - Moldorm', 'Tower of Hera - Big Chest', 'Tower of Hera - Compass Chest']:
|
||||
for location in ['Tower of Hera - Boss', 'Tower of Hera - Big Chest', 'Tower of Hera - Compass Chest']:
|
||||
forbid_item(world.get_location(location), 'Big Key (Tower of Hera)')
|
||||
# for location in ['Tower of Hera - Big Key Chest']:
|
||||
# forbid_item(world.get_location(location), 'Small Key (Tower of Hera)')
|
||||
|
@ -269,21 +269,21 @@ def global_rules(world):
|
|||
set_rule(world.get_location('Swamp Palace - Big Chest'), lambda state: state.has('Big Key (Swamp Palace)') or item_name(state, 'Swamp Palace - Big Chest') == 'Big Key (Swamp Palace)')
|
||||
set_always_allow(world.get_location('Swamp Palace - Big Chest'), lambda state, item: item.name == 'Big Key (Swamp Palace)')
|
||||
set_rule(world.get_entrance('Swamp Palace (North)'), lambda state: state.has('Hookshot'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Swamp Palace - Arrghus'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Swamp Palace - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Swamp Palace - Prize'))
|
||||
for location in ['Swamp Palace - Entrance']:
|
||||
forbid_item(world.get_location(location), 'Big Key (Swamp Palace)')
|
||||
|
||||
set_rule(world.get_entrance('Thieves Town Big Key Door'), lambda state: state.has('Big Key (Thieves Town)'))
|
||||
set_rule(world.get_entrance('Blind Fight'), lambda state: state.has_key('Small Key (Thieves Town)'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Thieves Town - Blind'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Thieves Town - Prize'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Thieves\' Town - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Thieves\' Town - Prize'))
|
||||
set_rule(world.get_location('Thieves\' Town - Big Chest'), lambda state: (state.has_key('Small Key (Thieves Town)') or item_name(state, 'Thieves\' Town - Big Chest') == 'Small Key (Thieves Town)') and state.has('Hammer'))
|
||||
set_always_allow(world.get_location('Thieves\' Town - Big Chest'), lambda state, item: item.name == 'Small Key (Thieves Town)' and state.has('Hammer'))
|
||||
set_rule(world.get_location('Thieves\' Town - Attic'), lambda state: state.has_key('Small Key (Thieves Town)'))
|
||||
for location in ['Thieves\' Town - Attic', 'Thieves\' Town - Big Chest', 'Thieves\' Town - Blind\'s Cell', 'Thieves Town - Blind']:
|
||||
for location in ['Thieves\' Town - Attic', 'Thieves\' Town - Big Chest', 'Thieves\' Town - Blind\'s Cell', 'Thieves\' Town - Boss']:
|
||||
forbid_item(world.get_location(location), 'Big Key (Thieves Town)')
|
||||
for location in ['Thieves\' Town - Attic', 'Thieves Town - Blind']:
|
||||
for location in ['Thieves\' Town - Attic', 'Thieves\' Town - Boss']:
|
||||
forbid_item(world.get_location(location), 'Small Key (Thieves Town)')
|
||||
|
||||
set_rule(world.get_entrance('Skull Woods First Section South Door'), lambda state: state.has_key('Small Key (Skull Woods)'))
|
||||
|
@ -293,9 +293,9 @@ def global_rules(world):
|
|||
set_rule(world.get_location('Skull Woods - Big Chest'), lambda state: state.has('Big Key (Skull Woods)') or item_name(state, 'Skull Woods - Big Chest') == 'Big Key (Skull Woods)')
|
||||
set_always_allow(world.get_location('Skull Woods - Big Chest'), lambda state, item: item.name == 'Big Key (Skull Woods)')
|
||||
set_rule(world.get_entrance('Skull Woods Torch Room'), lambda state: state.has_key('Small Key (Skull Woods)', 3) and state.has('Fire Rod') and state.has_sword()) # sword required for curtain
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Skull Woods - Mothula'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Skull Woods - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Skull Woods - Prize'))
|
||||
for location in ['Skull Woods - Mothula']:
|
||||
for location in ['Skull Woods - Boss']:
|
||||
forbid_item(world.get_location(location), 'Small Key (Skull Woods)')
|
||||
|
||||
set_rule(world.get_entrance('Ice Palace Entrance Room'), lambda state: state.has('Fire Rod') or (state.has('Bombos') and state.has_sword()))
|
||||
|
@ -304,9 +304,9 @@ def global_rules(world):
|
|||
# TODO: investigate change from VT. Changed to hookshot or 2 keys (no checking for big key in specific chests)
|
||||
set_rule(world.get_entrance('Ice Palace (East)'), lambda state: (state.has('Hookshot') or (item_in_locations(state, 'Big Key (Ice Palace)', ['Ice Palace - Spike Room', 'Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']) and state.has_key('Small Key (Ice Palace)'))) and (state.world.can_take_damage or state.has('Hookshot') or state.has('Cape') or state.has('Cane of Byrna')))
|
||||
set_rule(world.get_entrance('Ice Palace (East Top)'), lambda state: state.can_lift_rocks() and state.has('Hammer'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Ice Palace - Kholdstare'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Ice Palace - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Ice Palace - Prize'))
|
||||
for location in ['Ice Palace - Big Chest', 'Ice Palace - Kholdstare']:
|
||||
for location in ['Ice Palace - Big Chest', 'Ice Palace - Boss']:
|
||||
forbid_item(world.get_location(location), 'Big Key (Ice Palace)')
|
||||
|
||||
set_rule(world.get_entrance('Misery Mire Entrance Gap'), lambda state: (state.has_Boots() or state.has('Hookshot')) and (state.has_sword() or state.has('Fire Rod') or state.has('Ice Rod') or state.has('Hammer') or state.has('Cane of Somaria') or state.can_shoot_arrows())) # need to defeat wizzrobes, bombs don't work ...
|
||||
|
@ -324,9 +324,9 @@ def global_rules(world):
|
|||
set_rule(world.get_location('Misery Mire - Compass Chest'), lambda state: state.has_fire_source())
|
||||
set_rule(world.get_location('Misery Mire - Big Key Chest'), lambda state: state.has_fire_source())
|
||||
set_rule(world.get_entrance('Misery Mire (Vitreous)'), lambda state: state.has('Cane of Somaria'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Misery Mire - Vitreous'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Misery Mire - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Misery Mire - Prize'))
|
||||
for location in ['Misery Mire - Big Chest', 'Misery Mire - Vitreous']:
|
||||
for location in ['Misery Mire - Big Chest', 'Misery Mire - Boss']:
|
||||
forbid_item(world.get_location(location), 'Big Key (Misery Mire)')
|
||||
|
||||
set_rule(world.get_entrance('Turtle Rock Entrance Gap'), lambda state: state.has('Cane of Somaria'))
|
||||
|
@ -345,7 +345,7 @@ def global_rules(world):
|
|||
set_rule(world.get_location('Turtle Rock - Eye Bridge - Top Left'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
|
||||
set_rule(world.get_location('Turtle Rock - Eye Bridge - Top Right'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
|
||||
set_rule(world.get_entrance('Turtle Rock (Trinexx)'), lambda state: state.has_key('Small Key (Turtle Rock)', 4) and state.has('Big Key (Turtle Rock)') and state.has('Cane of Somaria'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Turtle Rock - Trinexx'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Turtle Rock - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Turtle Rock - Prize'))
|
||||
|
||||
set_trock_key_rules(world)
|
||||
|
@ -363,7 +363,7 @@ def global_rules(world):
|
|||
set_rule(world.get_entrance('Palace of Darkness Spike Statue Room Door'), lambda state: state.has_key('Small Key (Palace of Darkness)', 6) or (item_name(state, 'Palace of Darkness - Harmless Hellway') in ['Small Key (Palace of Darkness)'] and state.has_key('Small Key (Palace of Darkness)', 4)))
|
||||
set_always_allow(world.get_location('Palace of Darkness - Harmless Hellway'), lambda state, item: item.name == 'Small Key (Palace of Darkness)' and state.has_key('Small Key (Palace of Darkness)', 5))
|
||||
set_rule(world.get_entrance('Palace of Darkness Maze Door'), lambda state: state.has_key('Small Key (Palace of Darkness)', 6))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Palace of Darkness - Helmasaur'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Palace of Darkness - Boss'))
|
||||
set_defeat_dungeon_boss_rule(world.get_location('Palace of Darkness - Prize'))
|
||||
|
||||
# these key rules are conservative, you might be able to get away with more lenient rules
|
||||
|
@ -464,7 +464,7 @@ def no_glitches_rules(world):
|
|||
add_conditional_lamp('Old Man House Front to Back', 'Old Man House', 'Entrance')
|
||||
add_conditional_lamp('Old Man House Back to Front', 'Old Man House', 'Entrance')
|
||||
add_conditional_lamp('Eastern Palace - Big Key Chest', 'Eastern Palace', 'Location')
|
||||
add_conditional_lamp('Eastern Palace - Armos Knights', 'Eastern Palace', 'Location')
|
||||
add_conditional_lamp('Eastern Palace - Boss', 'Eastern Palace', 'Location')
|
||||
add_conditional_lamp('Eastern Palace - Prize', 'Eastern Palace', 'Location')
|
||||
|
||||
if not world.sewer_light_cone:
|
||||
|
@ -561,7 +561,7 @@ def set_trock_key_rules(world):
|
|||
set_always_allow(world.get_location('Turtle Rock - Big Key Chest'), lambda state, item: item.name == 'Small Key (Turtle Rock)' and state.has_key('Small Key (Turtle Rock)', 3))
|
||||
|
||||
# set big key restrictions
|
||||
non_big_key_locations = ['Turtle Rock - Big Chest', 'Turtle Rock - Trinexx']
|
||||
non_big_key_locations = ['Turtle Rock - Big Chest', 'Turtle Rock - Boss']
|
||||
if not can_reach_back:
|
||||
non_big_key_locations += ['Turtle Rock - Crystaroller Room', 'Turtle Rock - Eye Bridge - Bottom Left',
|
||||
'Turtle Rock - Eye Bridge - Bottom Right', 'Turtle Rock - Eye Bridge - Top Left',
|
||||
|
@ -571,7 +571,7 @@ def set_trock_key_rules(world):
|
|||
forbid_item(world.get_location(location), 'Big Key (Turtle Rock)')
|
||||
|
||||
# small key restriction
|
||||
for location in ['Turtle Rock - Trinexx']:
|
||||
for location in ['Turtle Rock - Boss']:
|
||||
forbid_item(world.get_location(location), 'Small Key (Turtle Rock)')
|
||||
|
||||
|
||||
|
|
14
Text.py
14
Text.py
|
@ -517,6 +517,7 @@ class MultiByteCoreTextMapper(object):
|
|||
outbuf = bytearray()
|
||||
lineindex = 0
|
||||
is_intro = '{INTRO}' in text
|
||||
first_line=True
|
||||
|
||||
while lines:
|
||||
linespace = wrap
|
||||
|
@ -526,8 +527,11 @@ class MultiByteCoreTextMapper(object):
|
|||
continue
|
||||
|
||||
words = line.split(' ')
|
||||
outbuf.append(0x74 if lineindex == 0 else 0x75 if lineindex == 1 else 0x76) # line starter
|
||||
|
||||
if first_line:
|
||||
first_line=False
|
||||
else:
|
||||
outbuf.append(0x74 if lineindex == 0 else 0x75 if lineindex == 1 else 0x76) # line starter
|
||||
pending_space = False
|
||||
while words:
|
||||
word = words.pop(0)
|
||||
# sanity check: if the word we have is more than 14 characters, we take as much as we can still fit and push the rest back for later
|
||||
|
@ -540,9 +544,11 @@ class MultiByteCoreTextMapper(object):
|
|||
break
|
||||
|
||||
if cls.wordlen(word) <= linespace:
|
||||
if pending_space:
|
||||
outbuf.extend(RawMBTextMapper.convert(' '))
|
||||
if cls.wordlen(word) < linespace:
|
||||
word = word + ' '
|
||||
linespace -= cls.wordlen(word)
|
||||
pending_space = True
|
||||
linespace -= cls.wordlen(word) + 1 if pending_space else 0
|
||||
outbuf.extend(RawMBTextMapper.convert(word))
|
||||
else:
|
||||
# ran out of space, push word and lines back and continue with next line
|
||||
|
|
Loading…
Reference in New Issue