diff --git a/include/party_menu.h b/include/party_menu.h index 7ef6c2455..75fe7b958 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -60,6 +60,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task); void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task); void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task); void ItemUseCB_FormChange(u8 taskId, TaskFunc task); +void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task); u8 GetItemEffectType(u16 item); void CB2_PartyMenuFromStartMenu(void); void CB2_ChooseMonToGiveItem(void); diff --git a/src/item_use.c b/src/item_use.c index 785b5ad54..39d0d77e1 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -1127,7 +1127,7 @@ void ItemUseOutOfBattle_FormChange(u8 taskId) void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8 taskId) { - gItemUseCB = ItemUseCB_FormChange; + gItemUseCB = ItemUseCB_FormChange_ConsumedOnUse; gTasks[taskId].data[0] = TRUE; SetUpItemUseCallback(taskId); } diff --git a/src/party_menu.c b/src/party_menu.c index fe2db7f9c..f029ffff1 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5167,7 +5167,7 @@ void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task) } } -void ItemUseCB_FormChange(u8 taskId, TaskFunc task) +bool32 TryItemUseFormChange(u8 taskId, TaskFunc task) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 species = GetMonData(mon, MON_DATA_SPECIES); @@ -5184,10 +5184,9 @@ void ItemUseCB_FormChange(u8 taskId, TaskFunc task) GetMonNickname(mon, gStringVar1); StringExpandPlaceholders(gStringVar4, ChangedForm); DisplayPartyMenuMessage(gStringVar4, FALSE); - if (gTasks[taskId].data[0] == TRUE) - RemoveBagItem(gSpecialVar_ItemId, 1); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = task; + return TRUE; } else { @@ -5196,6 +5195,20 @@ void ItemUseCB_FormChange(u8 taskId, TaskFunc task) DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = task; + return FALSE; + } +} + +void ItemUseCB_FormChange(u8 taskId, TaskFunc task) +{ + TryItemUseFormChange(taskId, task); +} + +void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task) +{ + if (TryItemUseFormChange(taskId, task)) + { + RemoveBagItem(gSpecialVar_ItemId, 1); } }