Fix FORM_CHANGE_ITEM_HOLD bug manifested during givemon (#6702)
This commit is contained in:
parent
1cd4d23969
commit
fc872b481e
@ -6559,7 +6559,23 @@ u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32
|
||||
case FORM_CHANGE_ITEM_HOLD:
|
||||
if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE)
|
||||
&& (ability == formChanges[i].param2 || formChanges[i].param2 == ABILITY_NONE))
|
||||
targetSpecies = formChanges[i].targetSpecies;
|
||||
{
|
||||
// This is to prevent reverting to base form when giving the item to the corresponding form.
|
||||
// Eg. Giving a Zap Plate to an Electric Arceus without an item (most likely to happen when using givemon)
|
||||
bool32 currentItemForm = FALSE;
|
||||
for (int j = 0; formChanges[j].method != FORM_CHANGE_TERMINATOR; j++)
|
||||
{
|
||||
if (species == formChanges[j].targetSpecies
|
||||
&& formChanges[j].param1 == heldItem
|
||||
&& formChanges[j].param1 != ITEM_NONE)
|
||||
{
|
||||
currentItemForm = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!currentItemForm)
|
||||
targetSpecies = formChanges[i].targetSpecies;
|
||||
}
|
||||
break;
|
||||
case FORM_CHANGE_ITEM_USE:
|
||||
if (arg == formChanges[i].param1)
|
||||
|
||||
@ -256,6 +256,23 @@ TEST("givemon respects perfectIVCount")
|
||||
}
|
||||
}
|
||||
|
||||
TEST("givemon respects FORM_CHANGE_ITEM_HOLD")
|
||||
{
|
||||
ZeroPlayerPartyMons();
|
||||
|
||||
RUN_OVERWORLD_SCRIPT(
|
||||
givemon SPECIES_ARCEUS_NORMAL, 100, item=ITEM_ZAP_PLATE;
|
||||
givemon SPECIES_ARCEUS_GRASS, 100, item=ITEM_ZAP_PLATE;
|
||||
givemon SPECIES_ARCEUS_ELECTRIC, 100, item=ITEM_ZAP_PLATE;
|
||||
givemon SPECIES_GIRATINA_ORIGIN, 100, item=ITEM_POTION;
|
||||
);
|
||||
|
||||
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_ARCEUS_ELECTRIC);
|
||||
EXPECT_EQ(GetMonData(&gPlayerParty[1], MON_DATA_SPECIES), SPECIES_ARCEUS_ELECTRIC);
|
||||
EXPECT_EQ(GetMonData(&gPlayerParty[2], MON_DATA_SPECIES), SPECIES_ARCEUS_ELECTRIC);
|
||||
EXPECT_EQ(GetMonData(&gPlayerParty[3], MON_DATA_SPECIES), SPECIES_GIRATINA_ALTERED);
|
||||
}
|
||||
|
||||
TEST("givemon [moves]")
|
||||
{
|
||||
ZeroPlayerPartyMons();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user