Skip to content

Conversation

@Sirius902
Copy link
Contributor

@Sirius902 Sirius902 commented Aug 9, 2025

Moves the current Triforce Hunt behavior to a "Win" setting (sets the game completion flag and warps to credits) and adds a new "Ganon's Boss Key" setting that just gives Ganon's Boss Key once all Triforce Pieces are collected. Accordingly, the game's completion goal in logic with this setting is defeating Ganon instead of just completing the Triforce (the current Triforce Hunt behavior is to put junk on Ganon since you're warped directly to credits).

EDIT:

  • I'm not sure the logic is set up correctly for the Ganon's Boss Key option to actually require the Triforce Pieces to win the game since the original code assumes Ganon's Boss Key is in logic at the start. Can anyone give advice on how to correct this? Should I only run the below code if Triforce Hunt is specifically RO_TRIFORCE_HUNT_WIN?

    // Add Ganon's Boss key with Triforce Hunt so the game thinks it's obtainable from the start.
    // During save init, the boss key isn't actually given and it's instead given when completing the triforce.
    if (ctx->GetOption(RSK_GANONS_BOSS_KEY).Is(RO_GANON_BOSS_KEY_STARTWITH) ||
    ctx->GetOption(RSK_TRIFORCE_HUNT).IsNot(RO_TRIFORCE_HUNT_OFF)) {
    AddItemToInventory(RG_GANONS_CASTLE_BOSS_KEY);
    }
    See Edit II.

  • I've noticed if you have a randomizer generated from before this PR with Triforce Hunt enabled the game will crash when trying to deserialize the "On" option from the randomizer JSON since it was using the generic on/off option previously. Is this something I have to be worried about (migration or something)?

EDIT II:

  • I applied the change I mentioned in the first edit because it seems to be correct (Triforce Pieces required first, then GBK, then beating Ganon in the progression log).
Spoiler JSON Playthrough
{
    ...
    "Triforce Hunt": "Ganon's Boss Key",
    ...
    "playthrough": {
        "sphere 00": {
            "KF Mido Top Left Chest": "Triforce Piece",
            "KF Mido Bottom Left Chest": "Lens of Truth",
            "KF Mido Bottom Right Chest": "Triforce Piece",
            "KF Shop Item 1": "Triforce Piece",
            "KF Shop Item 2": "Buy Deku Shield",
            "KF Shop Item 7": "Triforce Piece",
            "LW Gift From Saria": "Progressive Ocarina",
            "Market Guard House Adult Pot 4": "Nocturne of Shadow",
            "Market Guard House Adult Pot 6": "Triforce Piece",
            "Market Guard House Adult Pot 7": "Triforce Piece",
            "Kak Bazaar Item 1": "Triforce Piece",
            "Kak Bazaar Item 2": "Buy Deku Nut (5)",
            "Kak Potion Shop Item 2": "Buy Hylian Shield",
            "Kak Potion Shop Item 3": "Mirror Shield",
            "Kak Potion Shop Item 7": "Song of Time",
            "Kak Near Impas House Adult Crate 2": "Strength Upgrade",
            "Market ToT Master Sword": "Master Sword"
        },
        "sphere 01": {
            "Completed Triforce": "Ganon's Castle Boss Key",
            ...
        },
        ...
        "sphere 13": {
            "Ganon": "Triforce"
        }
    },
    ...
}
  • However, I think I've discovered the Triforce Hunt logic is a bit broken on the latest develop and it seems to require two less Triforce Pieces than should be required in logic (note for example that for the below playthrough five Triforce Pieces are required however the progression log only shows collecting three). I'd be happy to include a fix in this PR if someone knows what's going on.
Spoiler JSON Playthrough
{
    ...
    "Triforce Hunt": "On",
    "Triforce Hunt Total Pieces": "100",
    "Triforce Hunt Required Pieces": "5",
    ...
    "playthrough": {
        "sphere 00": {
            "KF Mido Bottom Left Chest": "Triforce Piece",
            "KF Shop Item 2": "Buy Deku Shield",
            "KF Shop Item 4": "Triforce Piece",
            "LW Gift From Saria": "Triforce Piece",
            "Market Potion Shop Item 2": "Buy Hylian Shield",
            "Market Bombchu Shop Item 2": "Buy Deku Nut (5)"
        },
        "sphere 01": {
            "Completed Triforce": "Triforce"
        }
    },
    ...
}

Build Artifacts

@Sirius902 Sirius902 force-pushed the triforce-hunt-gbk branch 2 times, most recently from b660ec3 to 6bedb8c Compare August 9, 2025 18:38
@serprex
Copy link
Contributor

serprex commented Aug 11, 2025

See #5628 on how we'd like to greatly cleanup wincon implementation

@briaguya0
Copy link
Contributor

@serprex would this landing get in the way of the proposed cleanup?

@serprex
Copy link
Contributor

serprex commented Sep 9, 2025

No, this PR is pretty light

@Malkierian
Copy link
Contributor

@Sirius902 The one thing I could say to explain the last playthrough was having gotten a triforce piece both on Link's Pocket and Song from Impa. Don't suppose you still have that whole log around to check it.

@Malkierian
Copy link
Contributor

Oh, also, you won't need to worry about migration since I implemented version-lock for rando saves and spoilers.

@Malkierian
Copy link
Contributor

Malkierian commented Oct 10, 2025

I don't like the way this splits GBK options, but I'm having a hard time figuring out the proper way of combining these. My initial thoughts are, have Triforce Hunt as an option in GBK that overrides the default of Win for Hunt, and forces it on in the function that registers changes. That way, you don't have to worry about the disabled tooltip that I was going to ask for., and you could also have LACS and non-LACS versions of the Hunt condition for GBK. But this still feels clumsy.

@serprex
Copy link
Contributor

serprex commented Oct 10, 2025

I kinda want to get rid of the LACS GBK, since it prevents an actual LACS check, reducing value of medallions

@Malkierian
Copy link
Contributor

I mean, that is still an option. People don't have to use the LACS versions (though applying it to LACS could probably be handled better to minimize the sheer volume of that dropdown).

@Sirius902
Copy link
Contributor Author

@Sirius902 The one thing I could say to explain the last playthrough was having gotten a triforce piece both on Link's Pocket and Song from Impa. Don't suppose you still have that whole log around to check it.

I don't have the log anymore but I tried again on master a few times and it seems I can't reproduce the issue anymore so I guess it's fine.

I don't like the way this splits GBK options, but I'm having a hard time figuring out the proper way of combining these. My initial thoughts are, have Triforce Hunt as an option in GBK that overrides the default of Win for Hunt, and forces it on in the function that registers changes. That way, you don't have to worry about the disabled tooltip that I was going to ask for., and you could also have LACS and non-LACS versions of the Hunt condition for GBK. But this still feels clumsy.

Yeah I'm not really sure what would be best here either. I guess the main thing I was going for with this PR was making it so collecting all the Triforce pieces wouldn't outright end the game since that isn't as fun: I'd prefer if that gave some sort of important check and since the default Triforce Hunt already gifted GBK after winning I had it be that. More options would be nice though.

I kinda want to get rid of the LACS GBK, since it prevents an actual LACS check, reducing value of medallions

Yeah I think it'd be nice to have options for LACS to be a regular check if desired wherever possible.

@Malkierian
Copy link
Contributor

Yeah I think it'd be nice to have options for LACS to be a regular check if desired wherever possible.

Isn't it already, if you don't have GBK on LACS?

@aMannus
Copy link
Contributor

aMannus commented Oct 11, 2025

IMO GBK on LACS is a relic of the past probably because it was easier to code it that way previously (as in, for the 3DS rando). It should really just go entirely at some point, which would simplify some stuff a decent amount.

As for the playthrough jank, it struggles a lot removing the correct amount of pieces when there's a lot of alternative ways to get the required amount. It doesn't mean it actually requires the wrong amount of pieces, it's just a flaw in the actual playthrough writing.

@serprex
Copy link
Contributor

serprex commented Oct 12, 2025

Opened #5838 in regards to LACS discussion

@Sirius902
Copy link
Contributor Author

Sirius902 commented Oct 15, 2025

Can someone re-run the macOS job? Looks like a transient failure.

@Malkierian
Copy link
Contributor

Malkierian commented Oct 15, 2025

Looks like your last force push committed a lot of reversions.

Edit: Nevermind, was reading something else.

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