diff --git a/Not-showing-dex-entries-until-getting-the-Pokédex.md b/Not-showing-dex-entries-until-getting-the-Pokédex.md new file mode 100644 index 0000000..90ca7a2 --- /dev/null +++ b/Not-showing-dex-entries-until-getting-the-Pokédex.md @@ -0,0 +1,38 @@ +_Credit to Jaizu_ + +In Generation 3, you normally can't catch Pokémon without getting the Pokédex first. Because of this, it assumes that if you catch a Pokémon, you **must** have the Pokédex, so it shows the entry. + +With this change, if you catch a Pokémon without having the Pokédex, it won't show their entry. It will still register them, for when you do get the Dex. + +Open [src/battle_script_commands.c](../blob/master/src/battle_script_commands.c). Find `Cmd_trysetcaughtmondexflags` and add the following `else if` in between the existing `if` and `else`: +```c + else if (!FlagGet(FLAG_SYS_POKEDEX_GET)) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_SET_CAUGHT, personality); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } +``` +So in the end it ends up like this: + +```c +static void Cmd_trysetcaughtmondexflags(void) +{ + u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL); + u32 personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_PERSONALITY, NULL); + + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else if (!FlagGet(FLAG_SYS_POKEDEX_GET)) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_SET_CAUGHT, personality); + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); + } + else + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_SET_CAUGHT, personality); + gBattlescriptCurrInstr += 5; + } +} +``` \ No newline at end of file