From f040b5fad336524a965b0e3d9502941f5d4f1af1 Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 7 Mar 2022 10:48:31 -0700 Subject: [PATCH] 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 --- Items.py | 4 ++-- Main.py | 2 +- RELEASENOTES.md | 5 +++++ Rom.py | 20 +++++++++++++++----- data/base2current.bps | Bin 85592 -> 85637 bytes source/item/FillUtil.py | 4 ++-- 6 files changed, 25 insertions(+), 10 deletions(-) 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 8a5ba76fe588e583c60731caa14c552c57e9ae24..a1c5c08762376e32139e6e6a708d5081de18b736 100644 GIT binary patch delta 587 zcmV-R0<`_uoCSrQ1(1pXrjd)f1R;vvb(2W}gaKHy&H)bv0w1oE-v)jGl9OHskSh|b zsOsvPFTIuXtf+ti>O6>*BIT{9um_hZGJ&NDA~UV18X|d^C!m!gSCbhCLk_m9sOofp ziPp)WT!4xDvuX%Q0SHyDsOq?lB4)F@30?vSS*xfVf{h}0vmp$R{$Y}1Y=NDH1e_)Z zoG1sjJ#Dv{0D!240I8_Qb7KR5ZGdFxjR*iK|3Ae9(CeHe2P6n^Q!sLc2wK{upbDsp z3aY>GtEhzvyT1TteIPR zUkd?20tSGWq6-00e`h+5)dBzk06-wxTEZ};pbDtHPzNdh01DcdUN(-A0Q$Xf2b&vh zgRKj@zffp@BmnRdfC-llZG(;m?v*fl`l$hHlPraW0BfK5jjtjHew%BA9e@D4ttJP_ z0RZp}zffp@1puE=Xn%kTzW`=`1puD_W`E)^dit#c1Z$TUmu?IJTLEyF$_xP_3>mHT z6o6bh(gtfH`Iq<%0Wty0mn#hcGy%PrU=0B|0lk-+4FO3aUvJjs3h)KWFcpCGsQ{kP z4XNZJUG^O?2B|;{2m_WsHgt5XPsZ^J^4gog;CLfpa Z4gov^FMor#Fb@GBKM1G{O!D`Saq1gO=J5ak delta 500 zcmV zsOsvPFTIt-tf+ti>O6>*BDSrlum_hZGJ&NDA_T3d8X|d^C!m!gD3cioLk@?lsOofp ziPp)WT!4wpvuX%Q0SG3psOq?lA~&