-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Repeated Field Medicine Use
Credit: ghoulslash
If you're using a lot of potions at once, it can be annoying to keep returning to the bag after use. This simple fix keeps the menu open unless you run out of potions. The user will have to select Cancel
or press B
to exit the party menu. But this is intuitive.
Let's start by opening src/party_menu.c
First, find the function ItemUseCB_Medicine
. Inside the code block that starts with if (ExecuteTableBasedItemEffect_(gPartyMenu.slotId, item, 0))
, replace gTasks[taskId].func = task;
with:
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD)
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
else
gTasks[taskId].func = task;
Next, stay in the function ItemUseCB_Medicine
. Towards the end of the function, replace
.....
else
{
GetMonNickname(mon, gStringVar1);
GetMedicineItemEffectMessage(item);
DisplayPartyMenuMessage(gStringVar4, TRUE);
ScheduleBgCopyTilemapToVram(2);
gTasks[taskId].func = task;
}
with
.....
else
{
GetMonNickname(mon, gStringVar1);
GetMedicineItemEffectMessage(item);
DisplayPartyMenuMessage(gStringVar4, TRUE);
ScheduleBgCopyTilemapToVram(2);
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(item, 1))
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
else
gTasks[taskId].func = task;
}
Finally, find Task_DisplayHPRestoredMessage
. Replace gTasks[taskId].func = Task_ClosePartyMenuAfterText;
with:
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
else
gTasks[taskId].func = Task_ClosePartyMenuAfterText;
Credit: AsparagusEduardo
You may also want to use this for Rare Candies, so all you have to do is find PartyMenuTryEvolution
and replace gTasks[taskId].func = Task_ClosePartyMenuAfterText;
with:
if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1))
gTasks[taskId].func = Task_ReturnToChooseMonAfterText;
else
gTasks[taskId].func = Task_ClosePartyMenuAfterText;