Implement Repeated Medicine
This commit is contained in:
parent
8fc4aa9dcd
commit
fd8570640c
@ -4490,7 +4490,7 @@ void ItemUseCB_BattleChooseMove(u8 taskId, TaskFunc task)
|
||||
gTasks[taskId].func = Task_HandleWhichMoveInput;
|
||||
}
|
||||
|
||||
void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
|
||||
void ItemUsevoid ItemUseCB_Medicine(u8 taskId, TaskFunc task)
|
||||
{
|
||||
u16 hp = 0;
|
||||
struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
|
||||
@ -4520,7 +4520,11 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
|
||||
PlaySE(SE_SELECT);
|
||||
DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE);
|
||||
ScheduleBgCopyTilemapToVram(2);
|
||||
gTasks[taskId].func = task;
|
||||
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD)
|
||||
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
|
||||
else
|
||||
gTasks[taskId].func = task;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -4552,7 +4556,10 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
|
||||
GetMedicineItemEffectMessage(item, oldStatus);
|
||||
DisplayPartyMenuMessage(gStringVar4, TRUE);
|
||||
ScheduleBgCopyTilemapToVram(2);
|
||||
gTasks[taskId].func = task;
|
||||
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(item, 1))
|
||||
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
|
||||
else
|
||||
gTasks[taskId].func = task;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4752,7 +4759,10 @@ static void Task_DisplayHPRestoredMessage(u8 taskId)
|
||||
DisplayPartyMenuMessage(gStringVar4, FALSE);
|
||||
ScheduleBgCopyTilemapToVram(2);
|
||||
HandleBattleLowHpMusicChange();
|
||||
gTasks[taskId].func = Task_ClosePartyMenuAfterText;
|
||||
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
|
||||
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
|
||||
else
|
||||
gTasks[taskId].func = Task_ClosePartyMenuAfterText;
|
||||
}
|
||||
|
||||
static void Task_ClosePartyMenuAfterText(u8 taskId)
|
||||
@ -5170,7 +5180,10 @@ static void CB2_ReturnToPartyMenuWhileLearningMove(void)
|
||||
{
|
||||
if (sFinalLevel != 0)
|
||||
SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sFinalLevel); // to avoid displaying incorrect level
|
||||
InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback);
|
||||
if (gSpecialVar_ItemId >= ITEM_RARE_CANDY && gSpecialVar_ItemId <= ITEM_DYNAMAX_CANDY && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
|
||||
InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_USE_ITEM, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback);
|
||||
else
|
||||
InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback);
|
||||
}
|
||||
|
||||
static void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId)
|
||||
@ -5480,6 +5493,12 @@ static void Task_TryLearningNextMove(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void CB2_ReturnToPartyMenuUsingRareCandy(void)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_RareCandy;
|
||||
SetMainCallback2(CB2_ShowPartyMenuForItemUse);
|
||||
}
|
||||
|
||||
static void PartyMenuTryEvolution(u8 taskId)
|
||||
{
|
||||
struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
|
||||
@ -5492,13 +5511,19 @@ static void PartyMenuTryEvolution(u8 taskId)
|
||||
if (targetSpecies != SPECIES_NONE)
|
||||
{
|
||||
FreePartyPointers();
|
||||
gCB2_AfterEvolution = gPartyMenu.exitCallback;
|
||||
if (gSpecialVar_ItemId >= ITEM_RARE_CANDY && gSpecialVar_ItemId <= ITEM_DYNAMAX_CANDY && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
|
||||
gCB2_AfterEvolution = CB2_ReturnToPartyMenuUsingRareCandy;
|
||||
else
|
||||
gCB2_AfterEvolution = gPartyMenu.exitCallback;
|
||||
BeginEvolutionScene(mon, targetSpecies, TRUE, gPartyMenu.slotId);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = Task_ClosePartyMenuAfterText;
|
||||
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
|
||||
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
|
||||
else
|
||||
gTasks[taskId].func = Task_ClosePartyMenuAfterText;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user