Skip to content

Shuffle Silver#5659

Open
serprex wants to merge 9 commits intoHarbourMasters:developfrom
serprex:shuffle-silver
Open

Shuffle Silver#5659
serprex wants to merge 9 commits intoHarbourMasters:developfrom
serprex:shuffle-silver

Conversation

@serprex
Copy link
Copy Markdown
Member

@serprex serprex commented Jul 8, 2025

implement Silver Rupee Shuffle so that I start caring about it when @Pepper0ni is always bringing it up in logic refactors

Build Artifacts

@serprex serprex marked this pull request as draft July 9, 2025 04:02
@serprex
Copy link
Copy Markdown
Member Author

serprex commented Jul 13, 2025

currently blocked on logic refactors: #5649 #5456 #5650 #5661 #5662 #5664

@serprex serprex mentioned this pull request Oct 2, 2025
@serprex serprex force-pushed the shuffle-silver branch 5 times, most recently from dfd4739 to e03ded9 Compare November 24, 2025 13:23
@serprex serprex force-pushed the shuffle-silver branch 2 times, most recently from 4b13e03 to b5db8b5 Compare December 12, 2025 05:47
@serprex serprex force-pushed the shuffle-silver branch 4 times, most recently from 5573ba6 to 425bab1 Compare January 6, 2026 04:10
@serprex serprex requested a review from Pepper0ni January 13, 2026 02:59
@serprex serprex force-pushed the shuffle-silver branch 3 times, most recently from 3ee9270 to 91a1fcd Compare March 29, 2026 22:25
@serprex serprex marked this pull request as ready for review March 29, 2026 22:31
@serprex
Copy link
Copy Markdown
Member Author

serprex commented Mar 29, 2026

pulled tracker support from leggetc13's version. made a few fixes to tracker while in there (deal with RG/ITEM/QUEST overlaps, don't create textures for jabbernuts)

Would like to get kaleido in, but otherwise think this is ready to go in. Just needs testing. Maybe bringing over debug editor stuff would help there too

@chartergirl64
Copy link
Copy Markdown
Contributor

chartergirl64 commented Apr 1, 2026

Did my first playtest and found :

  • Silver rupee shuffle needs a tooltip explaining the options.
  • Greg on the item tracker has a 0/5 on start - seems to be pulling count from Training Ground Silver: Slope.
  • The silver rupees are invisible both as freestanding and as get item animation.
  • The silver rupee checks on check tracker are_formatted_like_this.

Some strange visuals (see image). The X marks where a silver rupee is and the spiky things show up when there is one on screen, sometimes.
image

@serprex
Copy link
Copy Markdown
Member Author

serprex commented Apr 2, 2026

not sure how that broke in rebase, but ported over draw code from leggettc's branch

@Xandervile
Copy link
Copy Markdown

Xandervile commented Apr 2, 2026

Noticed I had issues with generating seeds with silver rupee shuffle on, unsure if this conflicts with some other settings

Settings List I Had:

No Logic
Mixed Dungeons + Bosses Pool
Keysanity, random KeyRings

@chartergirl64
Copy link
Copy Markdown
Contributor

They aren't invisible anymore but they are quite large compared to everything else. (pics below)

Getting a stick bag marks your fishing pole as received on the item tracker. This is true whether added on debug or found organically.

Silver Rupee wallets (or start with) mark as 10/5 on item tracker when collected.

There's definitely something going on where several single silver rupees are not tracking on item tracker when collected but I do not have enough data yet on what all isn't tracking/why. Sometimes Shadow Silver: Spikes, Training Ground Silver: Water, and Training Ground Silver: Slope do not mark on tracker when collected but not always. There could be others, will test more.

Was not able to reproduce issue Xanderville had with generating seed on this build but did have generation issues on nightly although unsure of exact settings unfortunately.

Screenshot 2026-04-03 022627

Copy link
Copy Markdown
Contributor

@Pepper0ni Pepper0ni left a comment

Choose a reason for hiding this comment

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

Did a quick sweep of the logic to point out obvious issues.

LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_GRASS_2, logic->CanCutShrubs()),
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_GRASS_3, logic->CanCutShrubs()),
LOCATION(RC_BOTW_SILVER_1, true /*CanClimbHigh()*/),
LOCATION(RC_BOTW_SILVER_2, true /*CanClimb()*/),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Doorsanity will want to split this region up.

@@ -72,8 +72,16 @@ void RegionTable_Init_GanonsCastle() {
});

areaTable[RR_GANONS_CASTLE_FOREST_TRIAL_BEAMOS_ROOM] = Region("Ganon's Castle Forest Trial Beamos Room", SCENE_INSIDE_GANONS_CASTLE, {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We probably want to Rename END into MIDDLE.

The event and first silver can only be reached from the front, and are true as you get it while doing the fan jump.

3 and 4 are simple from the middle, 5 is simple from the end.

2 needs to be in middle (is adult or hookshot), and front (true) due to child not being able to climb the target.

LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_2, logic->FireTimer() >= 24),
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_3, logic->FireTimer() >= 40 && logic->CanUse(RG_GOLDEN_GAUNTLETS)),
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_4, logic->FireTimer() >= 8),
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_5, logic->FireTimer() >= 32 && logic->CanUse(RG_GOLDEN_GAUNTLETS)),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks like a refactor happened and now this needs changing

}, {
//Locations
//TODO figure it out
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_WATER_1, true),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The Middair ground jump needs adding, plus the power bracelet logic.

Child can get the middair silver doing a rolljump from the peg to grab the block.

}, {
//Exits
ENTRANCE(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_BEAMOS_TORCH, logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_HOVER_BOOTS)),
//Modelling the silver rupees properly will require a way to check temp flags in different regions.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OK, I had a think, and we can probably skip the assumption by setting the event on Moving Platform and baking in all the other requirements from there, which sucks but at least avoids the need for temp flag storage nonsense.

LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_3, true),
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_4, (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT)),
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_6, logic->CanUse(RG_HOOKSHOT)),
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_9, true),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The platform with 1 doesn't seem to be reachable with hovers without a backwalk/backflip or rolling, and should probably be split off. Also probably wants a lens check as it's invisible.

9 needs a jumpslash or hovers to reach, even a rolljump isn't enough.

areaTable[RR_SHADOW_TEMPLE_INVISIBLE_SPIKES_PLATFORM] = Region("Shadow Temple Invisible Spikes Platform", SCENE_SHADOW_TEMPLE, {}, {
//Locations
// can also get 2 & 4 with hovers backwalk backflip
LOCATION(RC_SHADOW_SILVER_SPIKES_1, logic->CanUse(RG_HOVER_BOOTS)),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Comment that it needs rolls or backwalk backflip, probably wants lens.

I would probably make the platform it's own region at this point.

//to get enough distance to reach the rupee
EVENT_ACCESS(LOGIC_SPIRIT_BOUNDERS_SILVERS, logic->CanUse(RG_HOVER_BOOTS) || logic->CanJumpslash() || logic->CanUse(RG_LONGSHOT)/* || CanBunnyHop()*/),
}, {}, {
EVENT_ACCESS(LOGIC_SPIRIT_SILVER_BOULDERS, logic->CanUse(RG_HOVER_BOOTS) || logic->CanJumpslash() || logic->CanUse(RG_LONGSHOT)/* || CanBunnyHop()*/),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Child needs roll to get the jumpslash here, and it's still pretty precise and may be trickworthy. Also, there's a damage boost off the boulder to grab it.

LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, logic->CanBreakPots()),
LOCATION(RC_SPIRIT_MQ_SILVER_LOBBY_1, true),
LOCATION(RC_SPIRIT_MQ_SILVER_LOBBY_2, true),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

2 and 3 are under boulders, 1 and 4 are in RR_SPIRIT_TEMPLE_MQ_BEHIND_GEYSER, and 5 is in the geyser which realistically needs to be in RR_SPIRIT_TEMPLE_MQ_BEHIND_GEYSER as that's whrere the switch is.

EVENT_ACCESS(LOGIC_SPIRIT_MQ_BIG_WALL_SILVERS, (logic->CanKillEnemy(RE_KEESE) || logic->CanUse(RG_SKULL_MASK)) && (logic->HasItem(RG_CLIMB) || logic->CanUse(RG_LONGSHOT))),
}, {}, {
}, {
LOCATION(RC_SPIRIT_MQ_SILVER_BIG_WALL_1, logic->Get(LOGIC_SPIRIT_MQ_SILVER_BIG_WALL) || logic->TakeDamage()),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sections needs whole new logic because this statement was built on the fact you can't drop down and collect all 5 climbless from the top, while the climb up logic was built assuming you went all the way up and doesn't apply to lower rupees in vaccum.

The funny Keese logic here (instead of CanAvoid(RE_KEESE)) is because the wall as a whole is too high for stunning to hold them up long enough, for the lower rupees this isn't needed. Hookshot is also enough to reach some of them climbless.

Also, most of these can be placed both here (dropdown strategies) or at BASE.

@Xandervile
Copy link
Copy Markdown

Xandervile commented Apr 4, 2026

Figured out my specific issue - the silver rupees shuffle seem to fail when Master Quest Dungeons are turned on. Tried random, sometimes works, sometimes doesn't, No MQ gens fine, all MQ seems to always fail. This is true in No Logic as well, something weird.

@Xandervile
Copy link
Copy Markdown

Did more digging - it doesn't generate when Ganon's Castle is MQ version. Think there is something iffy with that in particular. All other dungeons work when MQ.

@Pepper0ni
Copy link
Copy Markdown
Contributor

Pepper0ni commented Apr 12, 2026

it's probably #6487 ,it should get merged into develop soon after the release

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.

4 participants