diff --git a/Items.py b/Items.py index 7c737a08..757fc8e5 100644 --- a/Items.py +++ b/Items.py @@ -98,8 +98,8 @@ item_table = {'Bow': (True, False, None, 0x0B, 200, 'You have\nchosen the\narche 'Progressive Shield': (True, False, None, 0x5F, 50, 'have a better\nblocker in\nfront of you', 'and the new shield', 'shield-wielding kid', 'shield for sale', 'fungus for shield', 'shield boy defends again', 'a shield'), 'Bug Catching Net': (True, False, None, 0x21, 50, 'Let\'s catch\nsome bees and\nfaeries!', 'and the bee catcher', 'the bug-catching kid', 'stick web for sale', 'fungus for butterflies', 'wrong boy catches bees again', 'the bug net'), 'Cane of Byrna': (True, False, None, 0x18, 50, 'Use this to\nbecome\ninvincible!', 'and the bad cane', 'the spark-making kid', 'spark stick for sale', 'spark-stick for trade', 'cane boy encircles again', 'the blue cane'), - 'Boss Heart Container': (False, False, None, 0x3E, 40, 'Maximum health\nincreased!\nYeah!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), - 'Sanctuary Heart Container': (False, False, None, 0x3F, 50, 'Maximum health\nincreased!\nYeah!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), + 'Boss Heart Container': (False, True, None, 0x3E, 40, 'Maximum health\nincreased!\nYeah!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), + 'Sanctuary Heart Container': (False, True, None, 0x3F, 50, 'Maximum health\nincreased!\nYeah!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), 'Piece of Heart': (False, False, None, 0x17, 10, 'Just a little\npiece of love!', 'and the broken heart', 'the life-giving kid', 'little love for sale', 'fungus for life', 'life boy feels some love again', 'a heart piece'), 'Rupee (1)': (False, False, None, 0x34, 0, 'Just pocket\nchange. Move\nright along.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a green rupee'), 'Rupees (5)': (False, False, None, 0x35, 2, 'Just pocket\nchange. Move\nright along.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a blue rupee'), diff --git a/Main.py b/Main.py index f9f4ca53..3383ec2f 100644 --- a/Main.py +++ b/Main.py @@ -31,7 +31,7 @@ from Utils import output_path, parse_player_names from source.item.FillUtil import create_item_pool_config, massage_item_pool, district_item_pool_config from source.tools.BPS import create_bps_from_data -__version__ = '1.0.1.8-v' +__version__ = '1.0.1.9-v' from source.classes.BabelFish import BabelFish diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fa1a3186..1c27acee 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -147,6 +147,11 @@ Same as above but both small keys and bigs keys of the dungeon are not allowed o #### Volatile +* 1.0.1.9 + * Every pot you pick up that wasn't part of the location pool does not count toward the location count + * Fix for items spawning where a thrown pot was + * Fix for vanilla_fill, it now prioritizes heart container placements + * Fix for dungeon counter showing up in AT/HC in crossed dungeon mode * 1.0.1.8 * Every pot you pick up now counts toward the location count * A pot will de-spawn before the item under it does, error beep only plays if it still can't spawn diff --git a/Rom.py b/Rom.py index da14843e..fe6f3150 100644 --- a/Rom.py +++ b/Rom.py @@ -35,7 +35,7 @@ from source.item.FillUtil import valid_pot_items JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '4985e1082cc836abf425d68ae27c7c83' +RANDOMIZERBASEHASH = 'feadc243f2fe49237243d7c4da515d35' class JsonRom(object): @@ -893,6 +893,14 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): if world.pottery[player] not in ['none', 'keys']: # Cuccos should not prevent kill rooms from opening rom.write_byte(snes_to_pc(0x0DB457), 0x40) + if world.pottery[player] in ['none', 'keys']: + rom.write_byte(snes_to_pc(0x28AA56), 0) + elif world.pottery[player] == 'cave': + rom.write_byte(snes_to_pc(0x28AA56), 1) + elif world.pottery[player] == 'dungeon': + rom.write_byte(snes_to_pc(0x28AA56), 2) + elif world.pottery[player] == 'lottery': + rom.write_byte(snes_to_pc(0x28AA56), 3) write_int16(rom, 0x187010, credits_total) # dynamic credits if credits_total != 216: @@ -1514,10 +1522,12 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): rom.write_bytes(0x53E36+ow_map_index*2, int16_as_bytes(coords[0])) rom.write_bytes(0x53E56+ow_map_index*2, int16_as_bytes(coords[1])) rom.write_byte(0x53EA6+ow_map_index, world_indicator) - # in crossed doors - flip the compass exists flags - if world.doorShuffle[player] == 'crossed': - exists_flag = any(x for x in world.get_dungeon(dungeon, player).dungeon_items if x.type == 'Compass') - rom.write_byte(0x53E96+ow_map_index, 0x1 if exists_flag else 0x0) + # in crossed doors - flip the compass exists flags + if world.doorShuffle[player] == 'crossed': + for dungeon, portal_list in dungeon_portals.items(): + ow_map_index = dungeon_table[dungeon].map_index + exists_flag = any(x for x in world.get_dungeon(dungeon, player).dungeon_items if x.type == 'Compass') + rom.write_byte(0x53E96+ow_map_index, 0x1 if exists_flag else 0x0) rom.write_byte(0x18003C, compass_mode) diff --git a/data/base2current.bps b/data/base2current.bps index 8a5ba76f..a1c5c087 100644 Binary files a/data/base2current.bps and b/data/base2current.bps differ diff --git a/source/item/FillUtil.py b/source/item/FillUtil.py index ffe74956..24f22b3b 100644 --- a/source/item/FillUtil.py +++ b/source/item/FillUtil.py @@ -707,7 +707,7 @@ mode_grouping = { 'Maze Race', 'Spectacle Rock', 'Pyramid', "Zora's Ledge", 'Lumberjack Tree', 'Sunken Treasure', 'Spectacle Rock Cave', 'Lost Woods Hideout', 'Checkerboard Cave', 'Peg Cave', 'Cave 45', 'Graveyard Cave', 'Kakariko Well - Top', "Blind's Hideout - Top", 'Bonk Rock Cave', "Aginah's Cave", - 'Chest Game', 'Digging Game', 'Mire Shed - Right', 'Mimic Cave' + 'Chest Game', 'Digging Game', 'Mire Shed - Left', 'Mimic Cave' ], 'Big Keys': [ 'Eastern Palace - Big Key Chest', 'Ganons Tower - Big Key Chest', @@ -760,7 +760,7 @@ mode_grouping = { 'Paradox Cave Upper - Left', 'Paradox Cave Upper - Right', 'Spiral Cave', 'Brewery', 'C-Shaped House', 'Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left', 'Hype Cave - Bottom', 'Hype Cave - Generous Guy', 'Superbunny Cave - Bottom', 'Superbunny Cave - Top', 'Hookshot Cave - Top Right', - 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right', 'Hookshot Cave - Bottom Left', 'Mire Shed - Left' + 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right', 'Hookshot Cave - Bottom Left', 'Mire Shed - Right' ], 'GT Trash': [ 'Ganons Tower - DMs Room - Top Right', 'Ganons Tower - DMs Room - Top Left',