From dc4347253de83f2831e880bdb72753a0bec66687 Mon Sep 17 00:00:00 2001 From: Pepe20129 <72659707+Pepe20129@users.noreply.github.com> Date: Wed, 27 Dec 2023 18:55:09 +0100 Subject: [PATCH] Item cycling improvements (#3456) * Simplify item cycling * Simplify selection variables * Fix adult bunny hood and gray appropriate items * Don't go into cycling mode when there's no items to cycle to * Restore updating c buttons This was previously done with `Inventory_ReplaceItem` but that led to problems when another slot had the same item as the one that's being cycled. * Address review --- .../misc/ovl_kaleido_scope/z_kaleido_item.c | 266 +++++++++++------- .../misc/ovl_kaleido_scope/z_kaleido_scope.h | 3 +- .../ovl_kaleido_scope/z_kaleido_scope_PAL.c | 7 +- 3 files changed, 176 insertions(+), 100 deletions(-) diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c index 665c95b81..b04f07b38 100644 --- a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c +++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c @@ -14,8 +14,6 @@ u8 gAmmoItems[] = { static s16 sEquipState = 0; static s16 sEquipAnimTimer = 0; static s16 sEquipMoveTimer = 10; -bool gSelectingMask; -bool gSelectingAdultTrade; static s16 sAmmoVtxOffset[] = { 0, 2, 4, 6, 99, 99, 8, 99, 10, 99, 99, 99, 99, 99, 12, @@ -87,6 +85,10 @@ void KaleidoScope_SetItemCursorVtx(PauseContext* pauseCtx) { KaleidoScope_SetCursorVtx(pauseCtx, pauseCtx->cursorSlot[PAUSE_ITEM] * 4, pauseCtx->itemVtx); } +#pragma region Item Cycling + +s8 gCurrentItemCyclingSlot; + // Vertices for the extra items static Vtx sCycleExtraItemVtx[] = { // Left Item @@ -127,9 +129,11 @@ static Vtx sCycleAButtonVtx[] = { static sSlotCycleActiveAnimTimer[24] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // Renders a left and/or right item for any item slot that can support cycling -void KaleidoScope_DrawItemCycleExtras(PlayState* play, u8 slot, u8 isCycling, u8 canCycle, u8 leftItem, u8 rightItem) { +void KaleidoScope_DrawItemCycleExtras(PlayState* play, u8 slot, u8 canCycle, u8 leftItem, u8 rightItem) { PauseContext* pauseCtx = &play->pauseCtx; + u8 isCycling = gCurrentItemCyclingSlot == slot; + OPEN_DISPS(play->state.gfxCtx); // Update active cycling animation timer @@ -208,10 +212,20 @@ void KaleidoScope_DrawItemCycleExtras(PlayState* play, u8 slot, u8 isCycling, u8 gSPVertex(POLY_KAL_DISP++, sCycleExtraItemVtx, 8, 0); if (showLeftItem) { + if (!CHECK_AGE_REQ_ITEM(leftItem)) { + gDPSetGrayscaleColor(POLY_KAL_DISP++, 109, 109, 109, 255); + gSPGrayscale(POLY_KAL_DISP++, true); + } KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gItemIcons[leftItem], 32, 32, 0); + gSPGrayscale(POLY_KAL_DISP++, false); } if (showRightItem) { + if (!CHECK_AGE_REQ_ITEM(rightItem)) { + gDPSetGrayscaleColor(POLY_KAL_DISP++, 109, 109, 109, 255); + gSPGrayscale(POLY_KAL_DISP++, true); + } KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gItemIcons[rightItem], 32, 32, 4); + gSPGrayscale(POLY_KAL_DISP++, false); } Matrix_Pop(); @@ -220,6 +234,155 @@ void KaleidoScope_DrawItemCycleExtras(PlayState* play, u8 slot, u8 isCycling, u8 CLOSE_DISPS(play->state.gfxCtx); } +void KaleidoScope_HandleItemCycleExtras(PlayState* play, u8 slot, bool canCycle, u8 leftItem, u8 rightItem, bool replaceCButtons) { + Input* input = &play->state.input[0]; + PauseContext* pauseCtx = &play->pauseCtx; + bool dpad = (CVarGetInteger("gDpadPause", 0) && !CHECK_BTN_ALL(input->cur.button, BTN_CUP)); + u8 slotItem = gSaveContext.inventory.items[slot]; + u8 hasLeftItem = leftItem != ITEM_NONE && slotItem != leftItem; + u8 hasRightItem = rightItem != ITEM_NONE && slotItem != rightItem && leftItem != rightItem; + + if ( + canCycle && + pauseCtx->cursorSlot[PAUSE_ITEM] == slot && + CHECK_BTN_ALL(input->press.button, BTN_A) && + (hasLeftItem || hasRightItem) + ) { + Audio_PlaySoundGeneral(NA_SE_SY_DECIDE, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); + gCurrentItemCyclingSlot = gCurrentItemCyclingSlot == slot ? -1 : slot; + } + if (gCurrentItemCyclingSlot == slot) { + pauseCtx->cursorColorSet = 8; + if ((pauseCtx->stickRelX > 30 || pauseCtx->stickRelY > 30) || + dpad && CHECK_BTN_ANY(input->press.button, BTN_DRIGHT | BTN_DUP)) { + Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); + if (replaceCButtons) { + for (int i = 1; i < ARRAY_COUNT(gSaveContext.equips.buttonItems); i++) { + if (gSaveContext.equips.buttonItems[i] == gSaveContext.inventory.items[slot]) { + if (CHECK_AGE_REQ_ITEM(rightItem)) { + gSaveContext.equips.buttonItems[i] = rightItem; + Interface_LoadItemIcon1(play, i); + } else { + gSaveContext.equips.buttonItems[i] = ITEM_NONE; + } + break; + } + } + } + gSaveContext.inventory.items[slot] = rightItem; + } else if ((pauseCtx->stickRelX < -30 || pauseCtx->stickRelY < -30) || + dpad && CHECK_BTN_ANY(input->press.button, BTN_DLEFT | BTN_DDOWN)) { + Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); + if (replaceCButtons) { + for (int i = 1; i < ARRAY_COUNT(gSaveContext.equips.buttonItems); i++) { + if (gSaveContext.equips.buttonItems[i] == gSaveContext.inventory.items[slot]) { + if (CHECK_AGE_REQ_ITEM(leftItem)) { + gSaveContext.equips.buttonItems[i] = leftItem; + Interface_LoadItemIcon1(play, i); + } else { + gSaveContext.equips.buttonItems[i] = ITEM_NONE; + } + break; + } + } + } + gSaveContext.inventory.items[slot] = leftItem; + } + gCurrentItemCyclingSlot = pauseCtx->cursorSlot[PAUSE_ITEM] == slot ? slot : -1; + } +} + +bool CanMaskSelect() { + // only allow mask select when: + // the shop is open: + // * zelda's letter check: Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) + // * kak gate check: Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD) + // and the mask quest is complete: Flags_GetEventChkInf(EVENTCHKINF_PAID_BACK_BUNNY_HOOD_FEE) + return CVarGetInteger("gMaskSelect", 0) && + Flags_GetEventChkInf(EVENTCHKINF_PAID_BACK_BUNNY_HOOD_FEE) && + Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) && + Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD); +} + +void KaleidoScope_HandleItemCycles(PlayState* play) { + //handle the mask select + KaleidoScope_HandleItemCycleExtras( + play, + SLOT_TRADE_CHILD, + CanMaskSelect(), + INV_CONTENT(ITEM_TRADE_CHILD) <= ITEM_MASK_KEATON || INV_CONTENT(ITEM_TRADE_CHILD) > ITEM_MASK_TRUTH ? + ITEM_MASK_TRUTH : + INV_CONTENT(ITEM_TRADE_CHILD) - 1, + INV_CONTENT(ITEM_TRADE_CHILD) >= ITEM_MASK_TRUTH || INV_CONTENT(ITEM_TRADE_CHILD) < ITEM_MASK_KEATON ? + ITEM_MASK_KEATON : + INV_CONTENT(ITEM_TRADE_CHILD) + 1, + true + ); + + //the slot age requirement for the child trade slot has to be updated + //in case it currently holds the bunny hood + //to allow adult link to wear it if the setting is enabled + gSlotAgeReqs[SLOT_TRADE_CHILD] = + ( + ((CVarGetInteger("gMMBunnyHood", BUNNY_HOOD_VANILLA) != BUNNY_HOOD_VANILLA) && CVarGetInteger("gAdultBunnyHood", 0)) || + CVarGetInteger("gTimelessEquipment", 0) + ) && + INV_CONTENT(ITEM_TRADE_CHILD) == ITEM_MASK_BUNNY + ? AGE_REQ_NONE + : AGE_REQ_CHILD; + + //also update the age requirement for the bunny hood itself + gItemAgeReqs[ITEM_MASK_BUNNY] = + ((CVarGetInteger("gMMBunnyHood", BUNNY_HOOD_VANILLA) != BUNNY_HOOD_VANILLA) && CVarGetInteger("gAdultBunnyHood", 0)) || + CVarGetInteger("gTimelessEquipment", 0) + ? AGE_REQ_NONE + : AGE_REQ_CHILD; + + //handle the adult trade select + KaleidoScope_HandleItemCycleExtras( + play, + SLOT_TRADE_ADULT, + IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_ADULT_TRADE), + Randomizer_GetPrevAdultTradeItem(), + Randomizer_GetNextAdultTradeItem(), + true + ); +} + +void KaleidoScope_DrawItemCycles(PlayState* play) { + //draw the mask select + KaleidoScope_DrawItemCycleExtras( + play, + SLOT_TRADE_CHILD, + CanMaskSelect(), + INV_CONTENT(ITEM_TRADE_CHILD) <= ITEM_MASK_KEATON || INV_CONTENT(ITEM_TRADE_CHILD) > ITEM_MASK_TRUTH ? + ITEM_MASK_TRUTH : + INV_CONTENT(ITEM_TRADE_CHILD) - 1, + INV_CONTENT(ITEM_TRADE_CHILD) >= ITEM_MASK_TRUTH || INV_CONTENT(ITEM_TRADE_CHILD) < ITEM_MASK_KEATON ? + ITEM_MASK_KEATON : + INV_CONTENT(ITEM_TRADE_CHILD) + 1 + ); + + //draw the adult trade select + KaleidoScope_DrawItemCycleExtras( + play, + SLOT_TRADE_ADULT, + IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_ADULT_TRADE), + Randomizer_GetPrevAdultTradeItem(), + Randomizer_GetNextAdultTradeItem() + ); +} + +bool IsItemCycling() { + return gCurrentItemCyclingSlot != -1; +} + +void KaleidoScope_ResetItemCycling() { + gCurrentItemCyclingSlot = -1; +} + +#pragma endregion + void KaleidoScope_DrawItemSelect(PlayState* play) { static s16 magicArrowEffectsR[] = { 255, 100, 255 }; static s16 magicArrowEffectsG[] = { 0, 100, 255 }; @@ -240,16 +403,6 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { bool pauseAnyCursor = (CVarGetInteger("gPauseAnyCursor", 0) == PAUSE_ANY_CURSOR_RANDO_ONLY && IS_RANDO) || (CVarGetInteger("gPauseAnyCursor", 0) == PAUSE_ANY_CURSOR_ALWAYS_ON); - // only allow mask select when: - // the shop is open: - // * zelda's letter check: Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) - // * kak gate check: Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD) - // and the mask quest is complete: Flags_GetEventChkInf(EVENTCHKINF_PAID_BACK_BUNNY_HOOD_FEE) - bool canMaskSelect = CVarGetInteger("gMaskSelect", 0) && - Flags_GetEventChkInf(EVENTCHKINF_PAID_BACK_BUNNY_HOOD_FEE) && - Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) && - Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD); - OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL_42Opa(play->state.gfxCtx); @@ -260,7 +413,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { pauseCtx->nameColorSet = 0; if ((pauseCtx->state == 6) && (pauseCtx->unk_1E4 == 0) && (pauseCtx->pageIndex == PAUSE_ITEM)) { - moveCursorResult = 0 || gSelectingMask || gSelectingAdultTrade; + moveCursorResult = 0 || IsItemCycling(); oldCursorPoint = pauseCtx->cursorPoint[PAUSE_ITEM]; cursorItem = pauseCtx->cursorItem[PAUSE_ITEM]; @@ -434,7 +587,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { if (pauseCtx->cursorSpecialPos == 0) { if (cursorItem != PAUSE_ITEM_NONE) { if ((ABS(pauseCtx->stickRelY) > 30) || (dpad && CHECK_BTN_ANY(input->press.button, BTN_DDOWN | BTN_DUP))) { - moveCursorResult = 0 || gSelectingMask || gSelectingAdultTrade; + moveCursorResult = 0 || IsItemCycling(); cursorPoint = pauseCtx->cursorPoint[PAUSE_ITEM]; cursorY = pauseCtx->cursorY[PAUSE_ITEM]; @@ -499,68 +652,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { KaleidoScope_SetCursorVtx(pauseCtx, index, pauseCtx->itemVtx); if ((pauseCtx->debugState == 0) && (pauseCtx->state == 6) && (pauseCtx->unk_1E4 == 0)) { - if (canMaskSelect && cursorSlot == SLOT_TRADE_CHILD && CHECK_BTN_ALL(input->press.button, BTN_A)) { - Audio_PlaySoundGeneral(NA_SE_SY_DECIDE, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - gSelectingMask = !gSelectingMask; - } - if (gSelectingMask) { - pauseCtx->cursorColorSet = 8; - if (((pauseCtx->stickRelX > 30 || pauseCtx->stickRelY > 30) || - dpad && CHECK_BTN_ANY(input->press.button, BTN_DRIGHT | BTN_DUP)) && - INV_CONTENT(ITEM_TRADE_CHILD) < ITEM_MASK_TRUTH) { - Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - ++INV_CONTENT(ITEM_TRADE_CHILD); - } else if (((pauseCtx->stickRelX < -30 || pauseCtx->stickRelY < -30) || - dpad && CHECK_BTN_ANY(input->press.button, BTN_DLEFT | BTN_DDOWN)) && - INV_CONTENT(ITEM_TRADE_CHILD) > ITEM_MASK_KEATON) { - Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - --INV_CONTENT(ITEM_TRADE_CHILD); - } else if ((pauseCtx->stickRelX < -30 || pauseCtx->stickRelX > 30 || pauseCtx->stickRelY < -30 || pauseCtx->stickRelY > 30) || - dpad && CHECK_BTN_ANY(input->press.button, BTN_DUP | BTN_DDOWN | BTN_DLEFT | BTN_DRIGHT)) { - // Change to keaton mask if no mask is in child trade slot. Catches Zelda's letter and bottle duping over this slot. - if (INV_CONTENT(ITEM_TRADE_CHILD) < ITEM_MASK_KEATON || INV_CONTENT(ITEM_TRADE_CHILD) > ITEM_MASK_TRUTH) { - INV_CONTENT(ITEM_TRADE_CHILD) = ITEM_MASK_KEATON; - } else { - INV_CONTENT(ITEM_TRADE_CHILD) ^= ITEM_MASK_KEATON ^ ITEM_MASK_TRUTH; - } - Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - } - for (uint16_t cSlotIndex = 0; cSlotIndex < ARRAY_COUNT(gSaveContext.equips.cButtonSlots); cSlotIndex++) { - if (gSaveContext.equips.cButtonSlots[cSlotIndex] == SLOT_TRADE_CHILD) { - if (!LINK_IS_ADULT || CVarGetInteger("gTimelessEquipment", 0)) { - gSaveContext.equips.buttonItems[cSlotIndex+1] = INV_CONTENT(ITEM_TRADE_CHILD); - } else if (INV_CONTENT(ITEM_TRADE_CHILD) != gSaveContext.equips.buttonItems[cSlotIndex+1]) { - gSaveContext.equips.cButtonSlots[cSlotIndex] = SLOT_NONE; - gSaveContext.equips.buttonItems[cSlotIndex+1] = ITEM_NONE; - } - } - } - gSelectingMask = cursorSlot == SLOT_TRADE_CHILD; - - gSlotAgeReqs[SLOT_TRADE_CHILD] = gItemAgeReqs[ITEM_MASK_BUNNY] = - ((((CVarGetInteger("gMMBunnyHood", BUNNY_HOOD_VANILLA) != BUNNY_HOOD_VANILLA) && CVarGetInteger("gAdultBunnyHood", 0)) || CVarGetInteger("gTimelessEquipment", 0)) && - INV_CONTENT(ITEM_TRADE_CHILD) == ITEM_MASK_BUNNY) - ? AGE_REQ_NONE - : AGE_REQ_CHILD; - } - if (IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_ADULT_TRADE) && - cursorSlot == SLOT_TRADE_ADULT && CHECK_BTN_ALL(input->press.button, BTN_A)) { - Audio_PlaySoundGeneral(NA_SE_SY_DECIDE, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - gSelectingAdultTrade = !gSelectingAdultTrade; - } - if (gSelectingAdultTrade) { - pauseCtx->cursorColorSet = 8; - if (((pauseCtx->stickRelX > 30 || pauseCtx->stickRelY > 30) || - dpad && CHECK_BTN_ANY(input->press.button, BTN_DRIGHT | BTN_DUP))) { - Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - Inventory_ReplaceItem(play, INV_CONTENT(ITEM_TRADE_ADULT), Randomizer_GetNextAdultTradeItem()); - } else if (((pauseCtx->stickRelX < -30 || pauseCtx->stickRelY < -30) || - dpad && CHECK_BTN_ANY(input->press.button, BTN_DLEFT | BTN_DDOWN))) { - Audio_PlaySoundGeneral(NA_SE_SY_CURSOR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); - Inventory_ReplaceItem(play, INV_CONTENT(ITEM_TRADE_ADULT), Randomizer_GetPrevAdultTradeItem()); - } - gSelectingAdultTrade = cursorSlot == SLOT_TRADE_ADULT; - } + KaleidoScope_HandleItemCycles(play); u16 buttonsToCheck = BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT; if (CVarGetInteger("gDpadEquips", 0) && (!CVarGetInteger("gDpadPause", 0) || CHECK_BTN_ALL(input->cur.button, BTN_CUP))) { buttonsToCheck |= BTN_DUP | BTN_DDOWN | BTN_DLEFT | BTN_DRIGHT; @@ -678,15 +770,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { } } - // Adult trade item cycle - KaleidoScope_DrawItemCycleExtras(play, SLOT_TRADE_ADULT, gSelectingAdultTrade, - IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_ADULT_TRADE), - Randomizer_GetPrevAdultTradeItem(), Randomizer_GetNextAdultTradeItem()); - // Child mask item cycle (mimics the left/right item behavior from the cycling logic above) - u8 childTradeItem = INV_CONTENT(ITEM_TRADE_CHILD); - KaleidoScope_DrawItemCycleExtras(play, SLOT_TRADE_CHILD, gSelectingMask, canMaskSelect, - childTradeItem <= ITEM_MASK_KEATON ? ITEM_MASK_TRUTH : childTradeItem - 1, - childTradeItem >= ITEM_MASK_TRUTH ? ITEM_MASK_KEATON : childTradeItem + 1); + KaleidoScope_DrawItemCycles(play); CLOSE_DISPS(play->state.gfxCtx); } @@ -694,8 +778,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { void KaleidoScope_SetupItemEquip(PlayState* play, u16 item, u16 slot, s16 animX, s16 animY) { Input* input = &play->state.input[0]; PauseContext* pauseCtx = &play->pauseCtx; - gSelectingMask = false; - gSelectingAdultTrade = false; + KaleidoScope_ResetItemCycling(); if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { pauseCtx->equipTargetCBtn = 0; @@ -1079,9 +1162,4 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) { pauseCtx->equipAnimAlpha = 255; } } -} - -void KaleidoScope_ResetTradeSelect() { - gSelectingMask = false; - gSelectingAdultTrade = false; -} +} \ No newline at end of file diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h index 8c214d9b0..936f0bbdd 100644 --- a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h +++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h @@ -11,7 +11,6 @@ extern u8 gEquipAgeReqs[][4]; extern u8 gSlotAgeReqs[]; extern u8 gItemAgeReqs[]; extern u8 gAreaGsFlags[]; -extern bool gSelectingMask; #define MAP_48x85_TEX_WIDTH 48 #define MAP_48x85_TEX_HEIGHT 85 @@ -50,6 +49,6 @@ void PauseMapMark_Draw(PlayState* play); void KaleidoScope_UpdateCursorSize(PauseContext* pauseCtx); -void KaleidoScope_ResetTradeSelect(); +void KaleidoScope_ResetItemCycling(); #endif diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c index 4167324d7..b70197cc2 100644 --- a/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c +++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c @@ -1008,7 +1008,7 @@ void KaleidoScope_SetDefaultCursor(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; s16 s; s16 i; - gSelectingMask = false; + KaleidoScope_ResetItemCycling(); switch (pauseCtx->pageIndex) { case PAUSE_ITEM: @@ -1042,7 +1042,6 @@ void KaleidoScope_SetDefaultCursor(PlayState* play) { void KaleidoScope_SwitchPage(PauseContext* pauseCtx, u8 pt) { pauseCtx->unk_1E4 = 1; pauseCtx->unk_1EA = 0; - gSelectingMask = false; if (!pt) { pauseCtx->mode = pauseCtx->pageIndex * 2 + 1; @@ -1074,7 +1073,7 @@ void KaleidoScope_SwitchPage(PauseContext* pauseCtx, u8 pt) { gSaveContext.unk_13EA = 0; Interface_ChangeAlpha(50); - KaleidoScope_ResetTradeSelect(); + KaleidoScope_ResetItemCycling(); } void KaleidoScope_HandlePageToggles(PauseContext* pauseCtx, Input* input) { @@ -3857,7 +3856,7 @@ void KaleidoScope_Update(PlayState* play) } } - KaleidoScope_ResetTradeSelect(); + KaleidoScope_ResetItemCycling(); pauseCtx->state = 4; break;