diff options
Diffstat (limited to 'src/battle_pyramid_bag.c')
-rw-r--r-- | src/battle_pyramid_bag.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 266b85415..83bf35090 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -411,20 +411,20 @@ static void Task_ChooseItemsToTossFromPyramidBag(u8 taskId) void CB2_ReturnToPyramidBagMenu(void) { - GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_PREV, gPyramidBagMenuState.callback); + GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_PREV, gPyramidBagMenuState.exitCallback); } -void GoToBattlePyramidBagMenu(u8 location, void (*callback)(void)) +void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void)) { gPyramidBagMenu = AllocZeroed(sizeof(*gPyramidBagMenu)); if (location != PYRAMIDBAG_LOC_PREV) gPyramidBagMenuState.location = location; - if (callback != NULL) - gPyramidBagMenuState.callback = callback; + if (exitCallback != NULL) + gPyramidBagMenuState.exitCallback = exitCallback; - gPyramidBagMenu->exitCallback = NULL; + gPyramidBagMenu->newScreenCallback = NULL; gPyramidBagMenu->toSwapPos = POS_NONE; gPyramidBagMenu->scrollIndicatorsTaskId = TASK_NONE; @@ -624,7 +624,7 @@ static void CopyBagItemName(u8 *dst, u16 itemId) { ConvertIntToDecimalStringN(gStringVar1, ITEM_TO_BERRY(itemId), STR_CONV_MODE_LEADING_ZEROS, 2); CopyItemName(itemId, gStringVar2); - StringExpandPlaceholders(dst, gText_NumberVar1Clear7Var2); + StringExpandPlaceholders(dst, gText_NumberItem_TMBerry); } else { @@ -866,10 +866,13 @@ static void Task_ClosePyramidBag(u8 taskId) if (!gPaletteFade.active) { DestroyListMenuTask(tListTaskId, &gPyramidBagMenuState.scrollPosition, &gPyramidBagMenuState.cursorPosition); - if (gPyramidBagMenu->exitCallback != NULL) - SetMainCallback2(gPyramidBagMenu->exitCallback); + + // If ready for a new screen (e.g. party menu for giving an item) go to that screen + // Otherwise exit the bag and use callback set up when the bag was first opened + if (gPyramidBagMenu->newScreenCallback != NULL) + SetMainCallback2(gPyramidBagMenu->newScreenCallback); else - SetMainCallback2(gPyramidBagMenuState.callback); + SetMainCallback2(gPyramidBagMenuState.exitCallback); RemoveScrollArrow(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -1249,7 +1252,7 @@ static void BagAction_Give(u8 taskId) } else if (!ItemId_GetImportance(gSpecialVar_ItemId)) { - gPyramidBagMenu->exitCallback = CB2_ChooseMonToGiveItem; + gPyramidBagMenu->newScreenCallback = CB2_ChooseMonToGiveItem; CloseBattlePyramidBag(taskId); } else |