Handle GetAbilityBySpecies edge cases

This commit is contained in:
Scott 2021-05-23 16:17:43 -04:00
parent 2ad251cec3
commit 265cdcdc12
2 changed files with 20 additions and 6 deletions

View File

@ -368,6 +368,8 @@
#define MON_PIC_SIZE (64 * 64 / 2)
#define NUM_ABILITY_SLOTS 3
#define NUM_ABILITY_SLOTS (NUM_NORMAL_ABILITY_SLOTS + NUM_HIDDEN_ABILITY_SLOTS)
#define NUM_NORMAL_ABILITY_SLOTS 2
#define NUM_HIDDEN_ABILITY_SLOTS 1
#endif // GUARD_CONSTANTS_POKEMON_H

View File

@ -5369,14 +5369,26 @@ u8 GetMonsStateToDoubles_2(void)
u8 GetAbilityBySpecies(u16 species, u8 abilityNum)
{
int i;
if (abilityNum < NUM_ABILITY_SLOTS)
gLastUsedAbility = gBaseStats[species].abilities[abilityNum];
else
gLastUsedAbility = gBaseStats[species].abilities[0];
if (gLastUsedAbility == ABILITY_NONE)
gLastUsedAbility = gBaseStats[species].abilities[0];
gLastUsedAbility = ABILITY_NONE;
if (abilityNum >= NUM_NORMAL_ABILITY_SLOTS) // if abilityNum is empty hidden ability, look for other hidden abilities
{
for (i = NUM_NORMAL_ABILITY_SLOTS; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++)
{
gLastUsedAbility = gBaseStats[species].abilities[i];
}
}
for (i = 0; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++) // look for any non-empty ability
{
gLastUsedAbility = gBaseStats[species].abilities[i];
}
return gLastUsedAbility;
}