diff --git a/Fill.py b/Fill.py index 79af1403f..c6189460d 100644 --- a/Fill.py +++ b/Fill.py @@ -83,7 +83,7 @@ def fill(base_state, items, key_pool): shuffled_locations.pop(i) # place 2 HMG keys hybrid_state_base = all_state_base.copy() - for x in bigs + smalls + prizes + others: + for x in bigs + smalls + others: hybrid_state_base.collect(x, True) hybrid_smalls = [ItemFactory('Small Key (Swamp Palace)', player)] * 2 fill(hybrid_state_base, hybrid_smalls, hybrid_locations, unplaced_smalls) diff --git a/ItemList.py b/ItemList.py index 5889e4d06..3dce2da35 100644 --- a/ItemList.py +++ b/ItemList.py @@ -368,7 +368,17 @@ def generate_itempool(world, player): or (item.map and world.mapshuffle[player]) or (item.compass and world.compassshuffle[player]))]) - + if world.logic[player] == 'hybridglitches' and world.pottery[player] not in ['none', 'cave']: + keys_to_remove = 2 + to_remove = [] + for wix, wi in enumerate(world.itempool): + if wi.name == 'Small Key (Swamp Palace)' and wi.player == player: + to_remove.append(wix) + if keys_to_remove == len(to_remove): + break + for wix in reversed(to_remove): + del world.itempool[wix] + # logic has some branches where having 4 hearts is one possible requirement (of several alternatives) # rather than making all hearts/heart pieces progression items (which slows down generation considerably) # We mark one random heart container as an advancement item (or 4 heart pieces in expert mode) diff --git a/Rom.py b/Rom.py index 4fd431221..984ac066b 100644 --- a/Rom.py +++ b/Rom.py @@ -463,6 +463,13 @@ def patch_rom(world, rom, player, team, is_mystery=False): rom.write_byte(location.player_address, location.item.player) else: itemid = 0x5A + + if not location.locked and ((location.item.smallkey and world.keyshuffle[player] == 'none') or ( + location.item.bigkey and world.bigkeyshuffle[player] == 'none') or ( + location.item.map and world.mapshuffle[player] == 'none') or ( + location.item.compass and world.compassshuffle[player] == 'none')): + itemid = handle_native_dungeon(location, itemid) + rom.write_byte(location.address, itemid) else: # crystals