Skip to content

Not showing dex entries until getting the Pokédex

Eduardo Alvaro Quezada D'Ottone edited this page Jul 2, 2020 · 2 revisions

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. Find Cmd_trysetcaughtmondexflags and add the following else if in between the existing if and else:

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;
    }
}
Clone this wiki locally