More glitched fixes

This commit is contained in:
KrisDavie
2025-04-22 09:53:26 +02:00
parent d5385ea8af
commit d6b7f5161d
3 changed files with 19 additions and 2 deletions

View File

@@ -83,7 +83,7 @@ def fill_dungeons_restrictive(world, shuffled_locations):
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)

View File

@@ -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)

7
Rom.py
View File

@@ -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