diff --git a/include/dexnav.h b/include/dexnav.h index baa8f8c5a7..7720104c54 100644 --- a/include/dexnav.h +++ b/include/dexnav.h @@ -66,12 +66,12 @@ void EndDexNavSearch(u8 taskId); void Task_OpenDexNavFromStartMenu(u8 taskId); bool8 TryStartDexNavSearch(void); -void TryIncrementSpeciesSearchLevel(u16 dexNum); +void TryIncrementSpeciesSearchLevel(void); void ResetDexNavSearch(void); bool8 TryFindHiddenPokemon(void); u32 CalculateDexNavShinyRolls(void); void IncrementDexNavChain(void); -extern bool8 gDexNavBattle; +extern u16 gDexNavSpecies; #endif // GUARD_DEXNAV_H diff --git a/src/battle_main.c b/src/battle_main.c index 3ccbcd6873..94d5cb0c08 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5629,12 +5629,15 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) { gIsFishingEncounter = FALSE; gIsSurfingEncounter = FALSE; - if (gDexNavBattle && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) + if (gDexNavSpecies && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) + { IncrementDexNavChain(); + TryIncrementSpeciesSearchLevel(); + } else gSaveBlock3Ptr->dexNavChain = 0; - gDexNavBattle = FALSE; + gDexNavSpecies = SPECIES_NONE; ResetSpriteData(); if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK diff --git a/src/dexnav.c b/src/dexnav.c index 55e328bf83..1e3db82d4b 100644 --- a/src/dexnav.c +++ b/src/dexnav.c @@ -134,7 +134,7 @@ struct DexNavGUI EWRAM_DATA static struct DexNavSearch *sDexNavSearchDataPtr = NULL; EWRAM_DATA static struct DexNavGUI *sDexNavUiDataPtr = NULL; EWRAM_DATA static u8 *sBg1TilemapBuffer = NULL; -EWRAM_DATA bool8 gDexNavBattle = FALSE; +EWRAM_DATA u16 gDexNavSpecies = SPECIES_NONE; //// Function Declarations //GUI @@ -807,11 +807,11 @@ static void LoadSearchIconData(void) LoadCompressedSpriteSheetUsingHeap(&sHiddenMonIconSpriteSheet); } -static u8 GetSearchLevel(u16 dexNum) +static u8 GetSearchLevel(u16 species) { u8 searchLevel; #if USE_DEXNAV_SEARCH_LEVELS == TRUE - searchLevel = gSaveBlock3Ptr->dexNavSearchLevels[dexNum]; + searchLevel = gSaveBlock3Ptr->dexNavSearchLevels[species]; #else searchLevel = 0; #endif @@ -829,7 +829,7 @@ static void Task_SetUpDexNavSearch(u8 taskId) struct Task *task = &gTasks[taskId]; u16 species = sDexNavSearchDataPtr->species; - u8 searchLevel = GetSearchLevel(SpeciesToNationalPokedexNum(species)); + u8 searchLevel = GetSearchLevel(species); // init sprites sDexNavSearchDataPtr->iconSpriteId = MAX_SPRITES; @@ -1110,7 +1110,7 @@ static void Task_DexNavSearch(u8 taskId) if (sDexNavSearchDataPtr->proximity < 1) { - gDexNavBattle = TRUE; + gDexNavSpecies = sDexNavSearchDataPtr->species; CreateDexNavWildMon(sDexNavSearchDataPtr->species, sDexNavSearchDataPtr->potential, sDexNavSearchDataPtr->monLevel, sDexNavSearchDataPtr->abilityNum, sDexNavSearchDataPtr->heldItem, sDexNavSearchDataPtr->moves); @@ -2143,7 +2143,7 @@ static void PrintCurrentSpeciesInfo(void) } else { - ConvertIntToDecimalStringN(gStringVar4, GetSearchLevel(dexNum), 0, 4); + ConvertIntToDecimalStringN(gStringVar4, GetSearchLevel(species), 0, 4); AddTextPrinterParameterized3(WINDOW_INFO, 0, 0, SEARCH_LEVEL_Y, sFontColor_Black, 0, gStringVar4); } @@ -2666,11 +2666,11 @@ u32 CalculateDexNavShinyRolls(void) return chainBonus + rndBonus; } -void TryIncrementSpeciesSearchLevel(u16 dexNum) +void TryIncrementSpeciesSearchLevel() { #if USE_DEXNAV_SEARCH_LEVELS == TRUE - if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER && gSaveBlock3Ptr->dexNavSearchLevels[dexNum] < 255) - gSaveBlock3Ptr->dexNavSearchLevels[dexNum]++; + if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER && gSaveBlock3Ptr->dexNavSearchLevels[gDexNavSpecies] < 255) + gSaveBlock3Ptr->dexNavSearchLevels[gDexNavSpecies]++; #endif } diff --git a/src/pokemon.c b/src/pokemon.c index 5340691b46..ef90f10ba3 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1163,7 +1163,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, totalRerolls += 1; if (I_FISHING_CHAIN && gIsFishingEncounter) totalRerolls += CalculateChainFishingShinyRolls(); - if (gDexNavBattle) + if (gDexNavSpecies) totalRerolls += CalculateDexNavShinyRolls(); while (GET_SHINY_VALUE(value, personality) >= SHINY_ODDS && totalRerolls > 0)