mirror of
https://github.com/pret/pokefirered.git
synced 2026-10-01 05:20:00 -05:00
dynamax candy functionality
This commit is contained in:
@@ -131,6 +131,7 @@ ViridianCity_Mart_Items::
|
||||
.2byte ITEM_BOLD_MINT
|
||||
.2byte ITEM_ADAMANT_MINT
|
||||
.2byte ITEM_SERIOUS_MINT
|
||||
.2byte ITEM_DYNAMAX_CANDY
|
||||
.2byte ITEM_NONE
|
||||
release
|
||||
end
|
||||
|
||||
@@ -13,6 +13,7 @@ void ItemUseOutOfBattle_BerryPouch(u8 taskId);
|
||||
void ItemUseOutOfBattle_Bike(u8 taskId);
|
||||
void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId);
|
||||
void ItemUseOutOfBattle_CoinCase(u8 taskId);
|
||||
void ItemUseOutOfBattle_DynamaxCandy(u8);
|
||||
void ItemUseOutOfBattle_EscapeRope(u8 taskId);
|
||||
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId);
|
||||
void ItemUseOutOfBattle_EvolutionStone(u8 taskId);
|
||||
|
||||
@@ -65,6 +65,7 @@ bool8 MonKnowsMove(struct Pokemon *mon, u16 move);
|
||||
bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move);
|
||||
void ItemUseCB_TMHM(u8 taskId, TaskFunc func);
|
||||
void ItemUseCB_RareCandy(u8 taskId, TaskFunc func);
|
||||
void ItemUseCB_DynamaxCandy(u8 taskId, TaskFunc task);
|
||||
void ItemUseCB_SacredAsh(u8 taskId, TaskFunc func);
|
||||
void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc func);
|
||||
u8 GetItemEffectType(u16 item);
|
||||
@@ -88,8 +89,6 @@ u8 GetPartyIdFromBattlePartyId(u8 battlePartyId);
|
||||
void ShowPartyMenuToShowcaseMultiBattleParty(void);
|
||||
void ChooseMonForDaycare(void);
|
||||
void ChoosePartyMonByMenuType(u8 menuType);
|
||||
|
||||
// pokeemerald
|
||||
void ItemUseCB_BattleChooseMove(u8 taskId, TaskFunc task);
|
||||
const u8* GetItemEffect(u16 item);
|
||||
|
||||
|
||||
@@ -1806,7 +1806,7 @@ const struct Item gItemsInfo[] =
|
||||
"Pokémon by one."),
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_TYPE_PARTY_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_DynamaxCandy,
|
||||
.flingPower = 30,
|
||||
},
|
||||
|
||||
|
||||
@@ -301,6 +301,12 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
|
||||
DisplayItemMessageOnField(taskId, FONT_NORMAL, gStringVar4, Task_ItemUse_CloseMessageBoxAndReturnToField);
|
||||
}
|
||||
|
||||
void ItemUseOutOfBattle_DynamaxCandy(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_DynamaxCandy;
|
||||
SetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void ItemUseOutOfBattle_PowderJar(u8 taskId)
|
||||
{
|
||||
ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5);
|
||||
|
||||
@@ -5751,6 +5751,70 @@ static void DisplayMonLearnedMove(u8 taskId, u16 move)
|
||||
#define tHadEffect data[1]
|
||||
#define tLastSlotUsed data[2]
|
||||
|
||||
#define tState data[0]
|
||||
#define tMonId data[1]
|
||||
#define tDynamaxLevel data[2]
|
||||
#define tOldFunc 4
|
||||
|
||||
void Task_DynamaxCandy(u8 taskId)
|
||||
{
|
||||
static const u8 doneText[] = _("{STR_VAR_1}'s Dynamax Level\nincreased by 1!{PAUSE_UNTIL_PRESS}");
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
switch (tState)
|
||||
{
|
||||
case 0:
|
||||
// Can't use.
|
||||
if (tDynamaxLevel == MAX_DYNAMAX_LEVEL)
|
||||
{
|
||||
gPartyMenuUseExitCallback = FALSE;
|
||||
PlaySE(SE_SELECT);
|
||||
DisplayPartyMenuMessage(gText_WontHaveEffect, 1);
|
||||
ScheduleBgCopyTilemapToVram(2);
|
||||
gTasks[taskId].func = Task_ClosePartyMenuAfterText;
|
||||
return;
|
||||
}
|
||||
gPartyMenuUseExitCallback = TRUE;
|
||||
GetMonNickname(&gPlayerParty[tMonId], gStringVar1);
|
||||
CopyItemName(gSpecialVar_ItemId, gStringVar2);
|
||||
tState++;
|
||||
break;
|
||||
case 1:
|
||||
PlaySE(SE_USE_ITEM);
|
||||
StringExpandPlaceholders(gStringVar4, doneText);
|
||||
DisplayPartyMenuMessage(gStringVar4, 1);
|
||||
ScheduleBgCopyTilemapToVram(2);
|
||||
tState++;
|
||||
break;
|
||||
case 2:
|
||||
if (!IsPartyMenuTextPrinterActive())
|
||||
tState++;
|
||||
break;
|
||||
case 3:
|
||||
tDynamaxLevel++;
|
||||
SetMonData(&gPlayerParty[tMonId], MON_DATA_DYNAMAX_LEVEL, &tDynamaxLevel);
|
||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
||||
gTasks[taskId].func = Task_ClosePartyMenu;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ItemUseCB_DynamaxCandy(u8 taskId, TaskFunc task)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
tState = 0;
|
||||
tMonId = gPartyMenu.slotId;
|
||||
tDynamaxLevel = GetMonData(&gPlayerParty[tMonId], MON_DATA_DYNAMAX_LEVEL);
|
||||
SetWordTaskArg(taskId, tOldFunc, (uintptr_t)(gTasks[taskId].func));
|
||||
gTasks[taskId].func = Task_DynamaxCandy;
|
||||
}
|
||||
|
||||
#undef tState
|
||||
#undef tMonId
|
||||
#undef tDynamaxLevel
|
||||
#undef tOldFunc
|
||||
|
||||
void ItemUseCB_SacredAsh(u8 taskId, TaskFunc func)
|
||||
{
|
||||
sPartyMenuInternal->tUsedOnSlot = FALSE;
|
||||
|
||||
Reference in New Issue
Block a user