-
Notifications
You must be signed in to change notification settings - Fork 527
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
Fix Forest Stage upgrades with Skip Misc Interactions #5052
base: develop
Are you sure you want to change the base?
Fix Forest Stage upgrades with Skip Misc Interactions #5052
Conversation
@@ -1105,10 +1105,10 @@ void TimeSaverOnFlagSetHandler(int16_t flagType, int16_t flag) { | |||
case FLAG_ITEM_GET_INF: | |||
switch (flag) { | |||
case ITEMGETINF_OBTAINED_STICK_UPGRADE_FROM_STAGE: | |||
vanillaQueuedItemEntry = Rando::StaticData::RetrieveItem(RG_DEKU_STICK_CAPACITY_30).GetGIEntry_Copy(); | |||
vanillaQueuedItemEntry = Rando::StaticData::RetrieveItem(RG_PROGRESSIVE_STICK_UPGRADE).GetGIEntry_Copy(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if we "should" use the progressive items in vanilla saves like this. Instead we'd probably should explicitly check for the cur upgrade value and then set the corresponding GI ID like the vanilla source does for the theater checks. Namely, the progressives path reads the rando ctx and logic settings, which might not be safe in vanilla saves.
/cc @garrettjoecox and @leggettc18 , what do you think regarding the vanilla queue?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CC @briaguya-ai also, since they added this originally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for reference this is the PR moving deku theater to VB garrettjoecox#96
the logic it was replacing was directly in z_en_dnt_demo
if (IS_RANDO) {
Player* player = GET_PLAYER(play);
switch (Player_GetMask(play)) {
case PLAYER_MASK_SKULL:
if (!Flags_GetTreasure(play, 0x1F) && !Player_InBlockingCsMode(play, player)) {
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_DEKU_THEATER_SKULL_MASK, GI_STICK_UPGRADE_30);
GiveItemEntryWithoutActor(play, getItemEntry);
player->pendingFlag.flagID = 0x1F;
player->pendingFlag.flagType = FLAG_SCENE_TREASURE;
}
break;
case PLAYER_MASK_TRUTH:
if (!Flags_GetTreasure(play, 0x1E) && !Player_InBlockingCsMode(play, player)) {
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_DEKU_THEATER_MASK_OF_TRUTH, GI_NUT_UPGRADE_40);
GiveItemEntryWithoutActor(play, getItemEntry);
player->pendingFlag.flagID = 0x1E;
player->pendingFlag.flagType = FLAG_SCENE_TREASURE;
}
break;
}
return;
}
this does make me curious about how progressive items work with #5023 now though
Fixes #5051
The VB handlers for the Forest Stage upgrades inadvertently gave the player the max upgrades for both sticks and nuts. Now it's corrected to award progressive upgrades.
Build Artifacts