port ModifyStatByNature fakematch fix (from #1179)

This commit is contained in:
Kurausukun 2020-10-25 23:23:40 -04:00
parent 9c9b626ccb
commit b2100cb480

View file

@ -5746,25 +5746,29 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
{
// Dont modify HP, Accuracy, or Evasion by nature
u16 retVal;
// Don't modify HP, Accuracy, or Evasion by nature
if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS)
{
// Should just be "return n", but it wouldn't match without this.
u16 retVal = n;
retVal++;
retVal--;
return retVal;
return n;
}
switch (gNatureStatTable[nature][statIndex - 1])
{
case 1:
return (u16)(n * 110) / 100; // NOTE: will overflow for n > 595 because the intermediate value is cast to u16 before the division. Fix by removing (u16) cast
retVal = n * 110;
retVal /= 100;
break;
case -1:
return (u16)(n * 90) / 100; // NOTE: will overflow for n > 728, see above
retVal = n * 90;
retVal /= 100;
break;
default:
retVal = n;
break;
}
return n;
return retVal;
}
#define IS_LEAGUE_BATTLE \