Pokedex plus defaults to male icons and front pics (#4390)

* Pokedex defaults to male icons and front pics

* Choose palette from personality

* Unknown icon matches front pic
This commit is contained in:
sneed 2024-04-15 00:23:14 +03:00 committed by GitHub
parent fbff04d4e3
commit fd87a79b27
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4548,6 +4548,8 @@ static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top)
return i;
}
#define MALE_PERSONALITY 0xFE
// Unown and Spinda use the personality of the first seen individual of that species
// All others use personality 0
static u32 GetPokedexMonPersonality(u16 species)
@ -4561,7 +4563,7 @@ static u32 GetPokedexMonPersonality(u16 species)
}
else
{
return 0;
return MALE_PERSONALITY;
}
}
@ -4925,9 +4927,11 @@ static void Task_LoadStatsScreen(u8 taskId)
if (gTasks[taskId].data[1] == 0)
{
//Icon
u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u32 personality = GetPokedexMonPersonality(species);
FreeMonIconPalettes(); //Free space for new pallete
LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon
gTasks[taskId].data[6] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18, 31, 4, 0); //Create pokemon sprite
LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon
gTasks[taskId].data[6] = CreateMonIcon(species, SpriteCB_MonIcon, 18, 31, 4, personality); //Create pokemon sprite
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
gMain.state++;
@ -6059,13 +6063,15 @@ static void Task_LoadEvolutionScreen(u8 taskId)
case 3:
if (gTasks[taskId].data[1] == 0)
{
u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u32 personality = GetPokedexMonPersonality(species);
sPokedexView->selectedScreen = EVO_SCREEN;
ResetEvoScreenDataStruct();
//Icon
FreeMonIconPalettes(); //Free space for new pallete
LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon
PrintPreEvolutions(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum));
gTasks[taskId].data[4] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18 + 32*sPokedexView->numPreEvolutions, 31, 4, 0); //Create pokemon sprite
LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon
PrintPreEvolutions(taskId, species);
gTasks[taskId].data[4] = CreateMonIcon(species, SpriteCB_MonIcon, 18 + 32*sPokedexView->numPreEvolutions, 31, 4, personality); //Create pokemon sprite
EvoFormsPage_PrintNavigationButtons(); // Navigation buttons
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
@ -6247,11 +6253,12 @@ static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousT
if (base_i < iterations)
{
LoadMonIconPalette(targetSpecies); //Loads pallete for current mon
u32 personality = GetPokedexMonPersonality(targetSpecies);
LoadMonIconPalettePersonality(targetSpecies, personality); //Loads pallete for current mon
if (isEevee)
gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, 0); //Create pokemon sprite
gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, personality); //Create pokemon sprite
else
gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, 0); //Create pokemon sprite
gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, personality); //Create pokemon sprite
gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0;
}
}
@ -6292,8 +6299,9 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie
if (base_i < 3)
{
LoadMonIconPalette(preSpecies); //Loads pallete for current mon
gTasks[taskId].data[4+base_i] = CreateMonIcon(preSpecies, SpriteCB_MonIcon, 18 + 32*base_i, 31, 4, 0); //Create pokemon sprite
u32 personality = GetPokedexMonPersonality(preSpecies);
LoadMonIconPalettePersonality(preSpecies, personality); //Loads pallete for current mon
gTasks[taskId].data[4+base_i] = CreateMonIcon(preSpecies, SpriteCB_MonIcon, 18 + 32*base_i, 31, 4, personality); //Create pokemon sprite
gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0;
}
}
@ -6765,9 +6773,11 @@ static void Task_LoadFormsScreen(u8 taskId)
if (gTasks[taskId].data[1] == 0)
{
//Icon
u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u32 personality = GetPokedexMonPersonality(species);
FreeMonIconPalettes(); //Free space for new pallete
LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon
gTasks[taskId].data[4] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18, 31, 4, 0); //Create pokemon sprite
LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon
gTasks[taskId].data[4] = CreateMonIcon(species, SpriteCB_MonIcon, 18, 31, 4, personality); //Create pokemon sprite
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
EvoFormsPage_PrintNavigationButtons(); // Navigation buttons
@ -6946,13 +6956,14 @@ static void PrintForms(u8 taskId, u16 species)
continue;
else
{
u32 personality = GetPokedexMonPersonality(speciesForm);
sPokedexView->sFormScreenData.formIds[j++] = i;
times += 1;
LoadMonIconPalette(speciesForm); //Loads pallete for current mon
LoadMonIconPalettePersonality(speciesForm, personality); //Loads pallete for current mon
if (times < 7)
gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, 0); //Create pokemon sprite
gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, personality); //Create pokemon sprite
else if (times < 14)
gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, 0); //Create pokemon sprite
gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, personality); //Create pokemon sprite
gSprites[gTasks[taskId].data[4+times]].oam.priority = 0;
}
}