mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-13 17:22:25 +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] =
|
const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] =
|
||||||
{
|
{
|
||||||
[SPECIES_GIRATINA] = sGiratinaFormChangeTable,
|
[SPECIES_GIRATINA] = sGiratinaFormChangeTable,
|
||||||
|
[SPECIES_GIRATINA_ORIGIN] = sGiratinaFormChangeTable,
|
||||||
[SPECIES_SHAYMIN] = sShayminFormChangeTable,
|
[SPECIES_SHAYMIN] = sShayminFormChangeTable,
|
||||||
[SPECIES_SHAYMIN_SKY] = sShayminSkyFormChangeTable,
|
[SPECIES_SHAYMIN_SKY] = sShayminSkyFormChangeTable,
|
||||||
[SPECIES_ARCEUS] = sArceusFormChangeTable,
|
[SPECIES_ARCEUS] = sArceusFormChangeTable,
|
||||||
|
@ -27,6 +27,7 @@ FORM_ITEM_USE_DAY:
|
|||||||
#define WHEN_FORGOTTEN TRUE
|
#define WHEN_FORGOTTEN TRUE
|
||||||
|
|
||||||
static const struct FormChange sGiratinaFormChangeTable[] = {
|
static const struct FormChange sGiratinaFormChangeTable[] = {
|
||||||
|
{FORM_ITEM_HOLD, SPECIES_GIRATINA, ITEM_NONE},
|
||||||
{FORM_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB},
|
{FORM_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB},
|
||||||
{FORM_CHANGE_END},
|
{FORM_CHANGE_END},
|
||||||
};
|
};
|
||||||
|
@ -404,6 +404,7 @@ static bool8 SetUpFieldMove_Surf(void);
|
|||||||
static bool8 SetUpFieldMove_Fly(void);
|
static bool8 SetUpFieldMove_Fly(void);
|
||||||
static bool8 SetUpFieldMove_Waterfall(void);
|
static bool8 SetUpFieldMove_Waterfall(void);
|
||||||
static bool8 SetUpFieldMove_Dive(void);
|
static bool8 SetUpFieldMove_Dive(void);
|
||||||
|
void TryItemHoldFormChange(struct Pokemon *mon);
|
||||||
|
|
||||||
// static const data
|
// static const data
|
||||||
#include "data/pokemon/tutor_learnsets.h"
|
#include "data/pokemon/tutor_learnsets.h"
|
||||||
@ -1734,6 +1735,7 @@ static void GiveItemToMon(struct Pokemon *mon, u16 item)
|
|||||||
itemBytes[0] = item;
|
itemBytes[0] = item;
|
||||||
itemBytes[1] = item >> 8;
|
itemBytes[1] = item >> 8;
|
||||||
SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes);
|
SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes);
|
||||||
|
TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 TryTakeMonItem(struct Pokemon* mon)
|
static u8 TryTakeMonItem(struct Pokemon* mon)
|
||||||
@ -1747,6 +1749,7 @@ static u8 TryTakeMonItem(struct Pokemon* mon)
|
|||||||
|
|
||||||
item = ITEM_NONE;
|
item = ITEM_NONE;
|
||||||
SetMonData(mon, MON_DATA_HELD_ITEM, &item);
|
SetMonData(mon, MON_DATA_HELD_ITEM, &item);
|
||||||
|
TryItemHoldFormChange(&gPlayerParty[gPartyMenu.slotId]);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5213,6 +5216,20 @@ void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task)
|
|||||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
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)
|
u8 GetItemEffectType(u16 item)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user