Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting to shuffle Ganon's tower into the boss entrance pool #2063

Merged
merged 2 commits into from
Dec 8, 2024

Conversation

fenhl
Copy link
Collaborator

@fenhl fenhl commented Aug 8, 2023

This PR adds a checkbutton setting “Shuffle Ganon's Tower Entrance”, which shuffles the entrance from Ganon's Castle to Ganon's Tower, just behind the trials barrier, into the adult boss entrance pool if “Shuffle Boss Entrances” is set to “Age-Restricted”, or the boss entrance pool if it's set to “Full”. The setting is disabled if boss entrances are unshuffled, much like hideout ER with no interior ER.

The main reason I decided to use this entrance instead of Ganon's boss door is that the pots being reachable from both sides could get weird. It also has the advantage of keeping Ganon's boss key as a requirement for beating the game even with the setting on.

The entrance is sometimes hinted with 1–3 trials active, and always hinted with 4+ trials active. If the castle entrance is unshuffled, the tower entrance is also hinted based on the bridge condition.

@r0bd0g
Copy link

r0bd0g commented Aug 8, 2023

Logic Review

You need to handle FW warping:

  • Warping with FW from inside Tower
  • Returning FW to Tower from Castle
  • Returning FW to Castle from Tower

Some of the logic for MQ Ganon's was relying on the assumption that some kind of weapon was needed in the first hallway:

  • Blue Fire needs a weapon to hit the switch to lower the water jet*
  • All of the scrubs need to check for being stunned

Rather than exiting from Castle main back to lobby, you might consider using the savewarp, for consistency with what was done outside of the other boss doors?

I think this is all of it but I can't guarantee I didn't miss anything since I didn't go in and take a look around.

* You'll have to test to see what all works to lower the water jet. My best guess without any testing at all is can_jumpslash or has_explosives. Probably Boomerang works too, but it might be trick level, and it's not worth adding a trick just for something that it would only take sticks to do.

(Suggestion to shuffle the order of the rooms of the collapse as a bonus surprise if you have tower shuffled and collapse on.)

@fenhl fenhl added Type: Enhancement New feature or request Component: Logic Non-trivial changes to the JSON logic files Component: Algorithm Search, Fill, Playthrough, etc Component: Setting specific to setting(s) labels Aug 8, 2023
@fenhl fenhl added the Status: Waiting for Author Changes or response requested label Sep 26, 2023
@fenhl fenhl force-pushed the shuffle-ganon-tower branch from 8ca6787 to 680fe49 Compare September 26, 2023 23:01
@fenhl
Copy link
Collaborator Author

fenhl commented Sep 26, 2023

Review addressed except for testing the water jet in-game. Will have to do that later.

@r0bd0g
Copy link

r0bd0g commented Sep 27, 2023

Validation checks can pass through the first hallway in MQ Ganon's back to front but not front to back, despite it not needing any items as adult. There's an option here to extend the 'bypass events' hack by checking is_adult as an option outside of the event. You can decide whether you want that. This passthrough was probably the next thing on the bubble for me, as far as deciding how far to take that hack, but it wasn't a passthrough on main branch yet so I didn't have to decide.

@fenhl
Copy link
Collaborator Author

fenhl commented Sep 27, 2023

My suggested change to the definition of here would cover that.

@cjohnson57
Copy link
Collaborator

@fenhl Is the waiting for author tag still applicable?

@fenhl
Copy link
Collaborator Author

fenhl commented Nov 14, 2023

Yes, the water jet still needs to be tested.

@fenhl
Copy link
Collaborator Author

fenhl commented Nov 14, 2023

If anyone else wants to do this testing, please feel free to do so.

@r0bd0g
Copy link

r0bd0g commented Nov 14, 2023

Explosives/jumpslash is likely enough to be correct that you could probably shoot first if you wanted >_>

@fenhl
Copy link
Collaborator Author

fenhl commented Feb 15, 2024

Finally got around to testing boomerang and wasn't able to get it. So definitely trick level if it's even possible at all.

@fenhl fenhl added Status: Needs Review Someone should be looking at it Status: Under Consideration Developers are considering whether to accept or decline the feature described and removed Status: Waiting for Author Changes or response requested labels Feb 15, 2024
@r0bd0g
Copy link

r0bd0g commented Feb 15, 2024

(I'm very sure it's possible. But yeah no need to include it.)

@fenhl fenhl removed the Status: Under Consideration Developers are considering whether to accept or decline the feature described label Jun 1, 2024
@fenhl fenhl force-pushed the shuffle-ganon-tower branch 2 times, most recently from 770bccd to a89b9ab Compare September 13, 2024 16:11
@fenhl fenhl force-pushed the shuffle-ganon-tower branch from a89b9ab to d70b7f9 Compare September 13, 2024 16:13
@r0bd0g
Copy link

r0bd0g commented Oct 20, 2024

I guess if it wasn't clear, I have no issues with the logic in this PR.

@fenhl
Copy link
Collaborator Author

fenhl commented Oct 20, 2024

Just need someone to give the rest of the code a review then.

Comment on lines +797 to +810
# Ganon boss key
elif location.vanilla_item == 'Boss Key (Ganons Castle)':
if world.settings.shuffle_ganon_bosskey == 'vanilla':
shuffle_item = False
elif world.settings.shuffle_ganon_bosskey == 'remove':
world.state.collect(ItemFactory(item, world))
item = get_junk_item()[0]
shuffle_item = True
elif world.settings.shuffle_ganon_bosskey in ('any_dungeon', 'overworld', 'keysanity', 'regional'):
shuffle_item = True
else:
dungeon = [dungeon for dungeon in world.dungeons if dungeon.name == 'Ganons Castle'][0]
dungeon.boss_key.append(ItemFactory(item, world))

Copy link
Collaborator

@cjohnson57 cjohnson57 Dec 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the purpose of this code? (In relation to this PR)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the tower is no longer tagged as part of Ganon's Castle (to make it count as part of the hint area of the dungeon it's shuffled into, like other boss arenas), the code handling other boss keys no longer handles the Gbk.

@cjohnson57 cjohnson57 merged commit b499369 into OoTRandomizer:Dev Dec 8, 2024
3 checks passed
@cjohnson57 cjohnson57 added this to the next milestone Dec 8, 2024
@fenhl fenhl deleted the shuffle-ganon-tower branch December 8, 2024 00:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: Algorithm Search, Fill, Playthrough, etc Component: Logic Non-trivial changes to the JSON logic files Component: Setting specific to setting(s) Status: Needs Review Someone should be looking at it Type: Enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants