mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-13 09:12:24 +01:00
Hold Item party menu
This commit is contained in:
parent
d220d25aab
commit
fdd284b50b
@ -1,6 +1,7 @@
|
||||
const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] =
|
||||
{
|
||||
[SPECIES_GIRATINA] = sGiratinaFormChangeTable,
|
||||
[SPECIES_GIRATINA_ORIGIN] = sGiratinaFormChangeTable,
|
||||
[SPECIES_SHAYMIN] = sShayminFormChangeTable,
|
||||
[SPECIES_SHAYMIN_SKY] = sShayminSkyFormChangeTable,
|
||||
[SPECIES_ARCEUS] = sArceusFormChangeTable,
|
||||
|
@ -27,6 +27,7 @@ FORM_ITEM_USE_DAY:
|
||||
#define WHEN_FORGOTTEN TRUE
|
||||
|
||||
static const struct FormChange sGiratinaFormChangeTable[] = {
|
||||
{FORM_ITEM_HOLD, SPECIES_GIRATINA, ITEM_NONE},
|
||||
{FORM_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB},
|
||||
{FORM_CHANGE_END},
|
||||
};
|
||||
|
@ -404,6 +404,7 @@ static bool8 SetUpFieldMove_Surf(void);
|
||||
static bool8 SetUpFieldMove_Fly(void);
|
||||
static bool8 SetUpFieldMove_Waterfall(void);
|
||||
static bool8 SetUpFieldMove_Dive(void);
|
||||
void TryItemHoldFormChange(struct Pokemon *mon);
|
||||
|
||||
// static const data
|
||||
#include "data/pokemon/tutor_learnsets.h"
|
||||
@ -1734,6 +1735,7 @@ static void GiveItemToMon(struct Pokemon *mon, u16 item)
|
||||
itemBytes[0] = item;
|
||||
itemBytes[1] = item >> 8;
|
||||
SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes);
|
||||
TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId]);
|
||||
}
|
||||
|
||||
static u8 TryTakeMonItem(struct Pokemon* mon)
|
||||
@ -1747,6 +1749,7 @@ static u8 TryTakeMonItem(struct Pokemon* mon)
|
||||
|
||||
item = ITEM_NONE;
|
||||
SetMonData(mon, MON_DATA_HELD_ITEM, &item);
|
||||
TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId]);
|
||||
return 2;
|
||||
}
|
||||
|
||||
@ -5213,6 +5216,20 @@ void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task)
|
||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
||||
}
|
||||
}
|
||||
void TryItemHoldFormChange(struct Pokemon *mon)
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES);
|
||||
u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_ITEM_HOLD, 0);
|
||||
if (targetSpecies != SPECIES_NONE)
|
||||
{
|
||||
PlayCry2(targetSpecies, 0, 0x7D, 0xA);
|
||||
SetMonData(mon, MON_DATA_SPECIES, &targetSpecies);
|
||||
FreeAndDestroyMonIconSprite(&gSprites[sPartyMenuBoxes[gPartyMenu.slotId].monSpriteId]);
|
||||
CreatePartyMonIconSpriteParameterized(targetSpecies, GetMonData(mon, MON_DATA_PERSONALITY, NULL), &sPartyMenuBoxes[gPartyMenu.slotId], 1);
|
||||
CalculateMonStats(mon);
|
||||
UpdatePartyMonHeldItemSprite(mon, &sPartyMenuBoxes[gPartyMenu.slotId]);
|
||||
}
|
||||
}
|
||||
|
||||
u8 GetItemEffectType(u16 item)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user