Fixed Behemoth Blade/Bash handler not using form change tables (#6558)
This commit is contained in:
parent
ce1943904a
commit
8cf8de1344
@ -2005,16 +2005,22 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
|
||||
}
|
||||
}
|
||||
|
||||
// Handler for if Zacian or Zamazenta should learn Iron Head
|
||||
// since it transforms in the Behemoth Blade/Bash move in
|
||||
// battle in the Crowned forms.
|
||||
if (learnset[sLearningMoveTableID].move == MOVE_IRON_HEAD && (species == SPECIES_ZAMAZENTA_CROWNED || species == SPECIES_ZACIAN_CROWNED))
|
||||
// Handler for Pokémon whose moves change upon form change.
|
||||
// For example, if Zacian or Zamazenta should learn Iron Head,
|
||||
// they're prevented from doing if they have Behemoth Blade/Bash,
|
||||
// since it transforms into them while in their Crowned forms.
|
||||
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
|
||||
|
||||
for (u32 i = 0; formChanges != NULL && formChanges[i].method != FORM_CHANGE_TERMINATOR; i++)
|
||||
{
|
||||
for (u32 accessor = MON_DATA_MOVE1; accessor <= MON_DATA_MOVE4; accessor++)
|
||||
if (formChanges[i].method == FORM_CHANGE_END_BATTLE
|
||||
&& learnset[sLearningMoveTableID].move == formChanges[i].param3)
|
||||
{
|
||||
u32 move = GetMonData(mon, accessor);
|
||||
if (move == MOVE_BEHEMOTH_BLADE || move == MOVE_BEHEMOTH_BASH)
|
||||
return MOVE_NONE;
|
||||
for (u32 j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
if (formChanges[i].param2 == GetMonData(mon, MON_DATA_MOVE1 + j))
|
||||
return MOVE_NONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3643,10 +3649,10 @@ const u16 *GetSpeciesFormTable(u16 species)
|
||||
|
||||
const struct FormChange *GetSpeciesFormChanges(u16 species)
|
||||
{
|
||||
const struct FormChange *evolutions = gSpeciesInfo[SanitizeSpeciesId(species)].formChangeTable;
|
||||
if (evolutions == NULL)
|
||||
const struct FormChange *formChanges = gSpeciesInfo[SanitizeSpeciesId(species)].formChangeTable;
|
||||
if (formChanges == NULL)
|
||||
return gSpeciesInfo[SPECIES_NONE].formChangeTable;
|
||||
return evolutions;
|
||||
return formChanges;
|
||||
}
|
||||
|
||||
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user