So in the file `src/pokemon.c` I'm trying to make the part that levels pokemon up with rare candy not work if the pokemon is at the soft level cap. Here's what I have:
// Rare Candy
if ((itemEffect & ITEM3_LEVEL_UP)
&& GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL)
{
if ((GetMonData(mon, MON_DATA_LEVEL, NULL) < 19) || (FLAG_BADGE02_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 24) || (FLAG_BADGE03_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 29) || (FLAG_BADGE04_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 31) || (FLAG_BADGE05_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 33) || (FLAG_BADGE06_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 42) || (FLAG_BADGE07_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 46) || (FLAG_BADGE08_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 58) || (FLAG_IS_CHAMPION && GetMonData(mon, MON_DATA_LEVEL, NULL) < MAX_LEVEL))
{
dataUnsigned = gExperienceTables[gSpeciesInfo[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1];
SetMonData(mon, MON_DATA_EXP, &dataUnsigned);
CalculateMonStats(mon);
retVal = FALSE;
}
}
spaghetti code, I know. I think what may be wrong is that I'm using actual numbers for levels and not variables (i.e., MAX_LEVEL). How would I check a pokemon's level with a specific one?
Or what else could fix it if I'm completely off the mark? Thanks!
Spoiler:
// Rare Candy
if ((itemEffect & ITEM3_LEVEL_UP)
&& GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL)
{
if ((GetMonData(mon, MON_DATA_LEVEL, NULL) < 19) || (FLAG_BADGE02_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 24) || (FLAG_BADGE03_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 29) || (FLAG_BADGE04_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 31) || (FLAG_BADGE05_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 33) || (FLAG_BADGE06_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 42) || (FLAG_BADGE07_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 46) || (FLAG_BADGE08_GET && GetMonData(mon, MON_DATA_LEVEL, NULL) < 58) || (FLAG_IS_CHAMPION && GetMonData(mon, MON_DATA_LEVEL, NULL) < MAX_LEVEL))
{
dataUnsigned = gExperienceTables[gSpeciesInfo[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1];
SetMonData(mon, MON_DATA_EXP, &dataUnsigned);
CalculateMonStats(mon);
retVal = FALSE;
}
}
spaghetti code, I know. I think what may be wrong is that I'm using actual numbers for levels and not variables (i.e., MAX_LEVEL). How would I check a pokemon's level with a specific one?
Or what else could fix it if I'm completely off the mark? Thanks!