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

[Rando] Add Mix and Decouple support to Boss Entrances #3261

Merged
merged 21 commits into from
Feb 16, 2024

Conversation

Archez
Copy link
Contributor

@Archez Archez commented Oct 5, 2023

This PR adds support for mixing boss entrances into the mixed pool as well as decoupling boss room entrances.
Mixing boss rooms is only possible if boss entrances are set to "Full". Decouple logic on it's own will only account for being able to exit Ghoma's and King Dodongo's room.

Dungeon chains is effectively achieved by at least shuffling dungeon and boss entrances, then mixing only dungeons and bosses together.

Behind the scenes, blue warp handling was refactored to add blue warps into logic and handle assigning the right entrance during generation. These entrances are not unique overrides, instead of being tacked on as a property of other entrances. This simplifies the blue warp overrides on the game side and allows us to preserve the original warp entrance values, as well as opens the floor for a Blue Warp shuffle setting (in a future PR 😉). For now these blue warp entrances are hidden in the entrance tracker, but will be available when the blue warp setting is added.

  • Mix boss entrances
  • Decouple boss entrances
  • Adjust savewarps/deathwarps/bluewarps
  • Entrance tracker updates
  • Test logic and hints
    - [ ] Consider additional option to make it so you can exit adult boss rooms? N64 rando does not do this. I'm considering this out of scope and should be it's own feature due to how involved the logic is and changing how boss doors work entirely.

Build Artifacts

@LuigiXHero
Copy link
Contributor

To go with you should be able to select vanilla dungeon rewards so bosses keep their original ones This would be useful for hints so you know who the bosses are based on the reward hint. So Goron Ruby being at graveyard will tell you it's KD there.

@Archez
Copy link
Contributor Author

Archez commented Oct 6, 2023

To go with you should be able to select vanilla dungeon rewards so bosses keep their original ones This would be useful for hints so you know who the bosses are based on the reward hint. So Goron Ruby being at graveyard will tell you it's KD there.

A "vanilla" option for "Shuffle Dungeon Rewards" would be out of scope for this PR and should be handled on its own, but thanks for the suggestion!

@Archez Archez force-pushed the mix-boss-entrances branch from 60583c2 to bf7be66 Compare November 1, 2023 17:35
@Archez Archez marked this pull request as ready for review November 1, 2023 18:28
@Verrinium
Copy link

To go with you should be able to select vanilla dungeon rewards so bosses keep their original ones This would be useful for hints so you know who the bosses are based on the reward hint. So Goron Ruby being at graveyard will tell you it's KD there.

I think instead of that, it should just be gossip hints (Dodongo's Cavern leads into Shadow Temple)
and the area's compass can give an actual hint (Shadow Temple's Boss door leads to Forest Temple)
ATM I believe compass does not provide any info. I believe this is how it is handled in the n64 ootr.

@LuigiXHero
Copy link
Contributor

N64 rando has the compass tell you where the dungeon reward is.
So if it's just a boss let's say deku leads straight to barinade and it has goron ruby the compass will say: Goron Ruby is in Kokiri Forest.
While if a dungeon leads to a boss let's say the forest temple has Twinrova with the shadow medallion it'll say: Shadow medallion is in Forest Temple.
ZFG1 in an old stream suggested the option to tie the rewards back to the bosses to make it more clear. I brought it up in the discord and was told to post it here which makes the reply I got kinda funny lol.

Copy link
Contributor

@Pepe20129 Pepe20129 left a comment

Choose a reason for hiding this comment

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

After playing with this for a while, I haven't found any issues.

Comment on lines +808 to +811
// RANDOTODO: Only show blue warps if bluewarp shuffle is on
if (original->metaTag.ends_with("bw") || override->metaTag.ends_with("bw")) {
continue;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

out of scope for this PR (and i don't know if this is handled differently in rando v3), but this feels like a perfect example of the fragility of string based metatags (ENTR_LAKE_HYLIA_9 wouldn't work if the tag was entered as "bw,lh" instead of "lh,bw")

depending on how many tags we have it might make sense to use bitpacking instead

Copy link
Contributor

@garrettjoecox garrettjoecox left a comment

Choose a reason for hiding this comment

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

Have fun with these conflicts on v3 🙈

@garrettjoecox garrettjoecox merged commit 13fce82 into HarbourMasters:develop Feb 16, 2024
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants