From fa75d2b4e978c6653262de5dd81129d9cd07907d Mon Sep 17 00:00:00 2001 From: aerinon Date: Thu, 10 Nov 2022 14:14:54 -0700 Subject: [PATCH] Possible fix for standing items weirdness Generation fix for Bumper Cave Chaos door type fix Minor fix for universal keys Relaase notes update --- BaseClasses.py | 2 +- DoorShuffle.py | 10 +- RELEASENOTES.md | 239 ++++++++------------------- Rom.py | 2 +- data/base2current.bps | Bin 93445 -> 93456 bytes source/overworld/EntranceShuffle2.py | 8 +- 6 files changed, 79 insertions(+), 182 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 06c1855d..d89147c9 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -787,7 +787,7 @@ class CollectionState(object): door_candidates.append(door.name) return door_candidates door_candidates, skip = [], set() - if state.world.accessibility[player] != 'locations' and remaining_keys == 0: + if state.world.accessibility[player] != 'locations' and remaining_keys == 0 and dungeon_name != 'Universal': key_logic = state.world.key_logic[player][dungeon_name] for door, paired in key_logic.sm_doors.items(): if door.name in key_logic.door_rules: diff --git a/DoorShuffle.py b/DoorShuffle.py index 5458c020..ad22b1c0 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -1744,7 +1744,7 @@ class DoorTypePool: @staticmethod def get_choices(number): - return [max(number-i, 0) for i in range(-1, 5)] + return [max(number+i, 0) for i in range(-1, 5)] class BuilderDoorCandidates: @@ -2208,6 +2208,7 @@ def find_bk_special_location(builder, world, player): return loc return None + def check_required_paths_with_traps(paths, proposal, dungeon_name, start_regions, world, player): cached_initial_state = None if len(paths[dungeon_name]) > 0: @@ -2673,8 +2674,11 @@ def find_valid_bd_combination(builder, suggested, world, player): bd_door_pool = filter_key_door_pool(bd_door_pool, custom_dash_doors) dash_doors_needed -= len(custom_dash_doors) while len(bd_door_pool) < bomb_doors_needed + dash_doors_needed: - bomb_doors_needed = round(len(bd_door_pool) * bomb_doors_needed/ttl_needed) - dash_doors_needed = round(len(bd_door_pool) * dash_doors_needed/ttl_needed) + test = random.choice([True, False]) + if test: + bomb_doors_needed -= 1 + else: + dash_doors_needed -= 1 bomb_proposal = random.sample(bd_door_pool, k=bomb_doors_needed) bomb_proposal.extend(custom_bomb_doors) dash_pool = [x for x in bd_door_pool if x not in bomb_proposal] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ce89548a..8fc802a6 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,215 +1,108 @@ -## New Features +# New Features -## Pottery Lottery and Key Drop Shuffle Changes +One major change with this update is that big key doors and certain trap doors are no longer guaranteed to be vanilla in Dungeon Door Shuffle modes even if you choose not to shuffle those types. A newer algorithm for putting dungeons together has been written and it will remove big key doors and trap doors when necessary to ensure progress can be made. -### Pottery +Please note that retro features are now independently customizable as referenced below. Selecting Retro mode or World State: Retro will change Bow Mode to Retro (Progressive). Take Anys to Random, and Small Keys to Universal. -New pottery option that control which pots (and large blocks) are in the locations pool: +## Flute Mode -* None: No pots are in the pool, like normal randomizer -* Key Pots: The pots that have keys are in the pool. This is about half of the old keydropshuffle option -* Cave Pots: The pots that are not found in dungeons are in the pool. (Includes the large block in Spike Cave). Does -not include key pots. -* CaveKeys: Both non-dungeon pots and pots that used to have keys are in the pool. -* Reduced: Same as CaveKeys but also roughly a quarter of dungeon pots are added to the location pool picked at random. This is a dynamic mode so pots in the pool will be colored. Pots out of the pool will have vanilla contents. -* Clustered: Like reduced but pots are grouped by logical sets and roughly 50% of pots are chosen from those group. This is a dynamic mode like the above. -* Nonempty: All pots that had some sort of objects under them are chosen to be in the location pool. This excludes most large blocks and some pots out of dungeons. -* Dungeon Pots: The pots that are in dungeons are in the pool. (Includes serveral large blocks) -* Lottery: All pots and large blocks are in the pool +Normal mode for flute means you need to activate it at the village statue after finding it like usual. +Activated flute mode mean you can use it immediately upon finding it. the flute SFX plays to let you know this is the case. -By default, switches remain in their vanilla location (unless you turn on the legacy option below) +## Bow Mode -CLI `--pottery