Refactor dex completion (again) (#3937)

* Refactor dex completion

* Incorporate Alex's requests

* rename to dexForceRequired

* Revert GetPokedexRatingText argument type

* Apply suggestions from code review

Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>

* Revert "Revert GetPokedexRatingText argument type"

This reverts commit a9b0c28040.

* Fix HasAllMons

* Fix oops

---------

Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
This commit is contained in:
Bassoonian 2024-01-11 17:35:31 +01:00 committed by GitHub
parent e0f672fbad
commit a8a504ef25
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 22 deletions

View file

@ -1,6 +1,6 @@
#ifndef GUARD_BIRCH_PC_H
#define GUARD_BIRCH_PC_H
const u8 *GetPokedexRatingText(u16 count);
const u8 *GetPokedexRatingText(u32 count);
#endif // GUARD_BIRCH_PC_H

View file

@ -394,7 +394,8 @@ struct SpeciesInfo /*0x8C*/
u32 isPaldeanForm:1;
u32 cannotBeTraded:1;
u32 allPerfectIVs:1;
u32 padding4:18;
u32 dexForceRequired:1; // This species will be taken into account for Pokédex ratings even if they have the "isMythical" flag set.
u32 padding4:17;
// Move Data
/* 0x80 */ const struct LevelUpMove *levelUpLearnset;
/* 0x84 */ const u16 *teachableLearnset;

View file

@ -20,13 +20,6 @@ bool16 ScriptGetPokedexInfo(void)
return IsNationalPokedexEnabled();
}
// Species in this array are ignored in the progress towards a full regional dex
static const u16 sRegionalNotCountedList[] = {
SPECIES_JIRACHI,
SPECIES_DEOXYS,
SPECIES_NONE
};
#define BIRCH_DEX_STRINGS 21
static const u8 *const sBirchDexRatingTexts[BIRCH_DEX_STRINGS] =
@ -55,15 +48,20 @@ static const u8 *const sBirchDexRatingTexts[BIRCH_DEX_STRINGS] =
};
// This shows your Hoenn Pokedex rating and not your National Dex.
const u8 *GetPokedexRatingText(u16 count)
const u8 *GetPokedexRatingText(u32 count)
{
u32 i;
u32 i, j;
u16 maxDex = HOENN_DEX_COUNT - 1;
for(i = 0; sRegionalNotCountedList[i] != SPECIES_NONE; i++)
// doesNotCountForRegionalPokedex
for(i = 0; i < HOENN_DEX_COUNT; i++)
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(sRegionalNotCountedList[i]), FLAG_GET_CAUGHT))
count--;
maxDex--;
j = NationalPokedexNumToSpecies(HoennToNationalOrder(i + 1));
if (gSpeciesInfo[j].isMythical && !gSpeciesInfo[j].dexForceRequired)
{
if (GetSetPokedexFlag(j, FLAG_GET_CAUGHT))
count--;
maxDex--;
}
}
return sBirchDexRatingTexts[(count * (BIRCH_DEX_STRINGS - 1)) / maxDex];
}

View file

@ -4379,12 +4379,12 @@ u16 GetKantoPokedexCount(u8 caseID)
bool16 HasAllHoennMons(void)
{
u16 i;
u32 i, j;
// -2 excludes Jirachi and Deoxys
for (i = 0; i < HOENN_DEX_COUNT - 2; i++)
for (i = 0; i < HOENN_DEX_COUNT; i++)
{
if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT))
j = HoennToNationalOrder(i + 1);
if (!(gSpeciesInfo[j].isMythical && !gSpeciesInfo[j].dexForceRequired) && !GetSetPokedexFlag(j, FLAG_GET_CAUGHT))
return FALSE;
}
return TRUE;
@ -4392,7 +4392,7 @@ bool16 HasAllHoennMons(void)
bool8 HasAllKantoMons(void)
{
u16 i;
u32 i;
// -1 excludes Mew
for (i = 0; i < KANTO_DEX_COUNT - 1; i++)
@ -4405,11 +4405,12 @@ bool8 HasAllKantoMons(void)
bool16 HasAllMons(void)
{
u16 i;
u32 i, j;
for (i = 1; i < NATIONAL_DEX_COUNT + 1; i++)
{
if (!(gSpeciesInfo[i].isMythical) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT))
j = NationalPokedexNumToSpecies(i);
if (!(gSpeciesInfo[j].isMythical && !gSpeciesInfo[j].dexForceRequired) && !GetSetPokedexFlag(j, FLAG_GET_CAUGHT))
return FALSE;
}