Fixup ModifyStatByNature

This commit is contained in:
PokeCodec 2020-09-05 11:47:24 -04:00
parent 16ecbc6446
commit a7a64ecba0
2 changed files with 19 additions and 22 deletions

View File

@ -181,40 +181,36 @@ u32 GetMewMoveDirection(void)
{ {
if (ShouldMewMoveEast(mew, 1)) if (ShouldMewMoveEast(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else if (ShouldMewMoveWest(mew, 1)) if (ShouldMewMoveWest(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else return DIR_NORTH;
return DIR_NORTH;
} }
if (ShouldMewMoveSouth(mew, 0)) if (ShouldMewMoveSouth(mew, 0))
{ {
if (ShouldMewMoveEast(mew, 1)) if (ShouldMewMoveEast(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else if (ShouldMewMoveWest(mew, 1)) if (ShouldMewMoveWest(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else return DIR_SOUTH;
return DIR_SOUTH;
} }
if (ShouldMewMoveEast(mew, 0)) if (ShouldMewMoveEast(mew, 0))
{ {
if (ShouldMewMoveNorth(mew, 1)) if (ShouldMewMoveNorth(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else if (ShouldMewMoveSouth(mew, 1)) if (ShouldMewMoveSouth(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else return DIR_EAST;
return DIR_EAST;
} }
if (ShouldMewMoveWest(mew, 0)) if (ShouldMewMoveWest(mew, 0))
{ {
if (ShouldMewMoveNorth(mew, 1)) if (ShouldMewMoveNorth(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else if (ShouldMewMoveSouth(mew, 1)) if (ShouldMewMoveSouth(mew, 1))
return GetRandomMewDirectionCandidate(2); return GetRandomMewDirectionCandidate(2);
else return DIR_WEST;
return DIR_WEST;
} }
// If this point is reached, Mew cannot move without getting closer to the player // If this point is reached, Mew cannot move without getting closer to the player
@ -315,8 +311,7 @@ static u8 GetValidMewMoveDirection(u8 ignoredDir)
if (count > 1) if (count > 1)
return sMewDirectionCandidates[VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % count]; return sMewDirectionCandidates[VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % count];
else return sMewDirectionCandidates[0];
return sMewDirectionCandidates[0];
} }
void UpdateFarawayIslandStepCounter(void) void UpdateFarawayIslandStepCounter(void)

View File

@ -5746,25 +5746,27 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex) u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
{ {
u16 retVal;
// Dont modify HP, Accuracy, or Evasion by nature // Dont modify HP, Accuracy, or Evasion by nature
if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS) if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS)
{ {
// Should just be "return n", but it wouldn't match without this. return n;
u16 retVal = n;
retVal++;
retVal--;
return retVal;
} }
switch (gNatureStatTable[nature][statIndex - 1]) switch (gNatureStatTable[nature][statIndex - 1])
{ {
case 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 = (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
break;
case -1: case -1:
return (u16)(n * 90) / 100; // NOTE: will overflow for n > 728, see above retVal = (u16)(n * 90) / 100; // NOTE: will overflow for n > 728, see above
break;
default:
retVal = n;
break;
} }
return n; return retVal;
} }
#define IS_LEAGUE_BATTLE \ #define IS_LEAGUE_BATTLE \