Adds SHOW_TYPES_SEEN to the B_SHOW_TYPES option (#6561)

This commit is contained in:
khbsd 2025-04-10 14:43:21 -05:00 committed by GitHub
parent 8bdad34211
commit c1ad43b1cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 30 additions and 22 deletions

View File

@ -317,10 +317,11 @@
#define B_ENEMY_THROW_BALLS_SOUND GEN_LATEST // In GEN_5+, enemy Trainer's Poké Balls make a sound when thrown to send out a Pokémon. This can only be used when B_ENEMY_THROW_BALLS is set to GEN_6 or later.
#define B_PLAYER_THROW_BALLS_SOUND GEN_LATEST // In GEN_5+, the player's Poké Balls make a sound when thrown to send out a Pokémon.
#define SHOW_TYPES_NEVER 0
#define SHOW_TYPES_ALWAYS 1
#define SHOW_TYPES_CAUGHT 2
#define B_SHOW_TYPES SHOW_TYPES_NEVER // When defined as SHOW_TYPES_ALWAYS, after selecting "Fight" in battle, the types of all Pokemon are revealed. Whe defined as SHOW_TYPES_OWN, types are only revealed if the player owns the mon in question.
#define SHOW_TYPES_NEVER 0 // Never shows types in battle
#define SHOW_TYPES_ALWAYS 1 // Always show types in battle
#define SHOW_TYPES_CAUGHT 2 // Only show types if you've caught a species of the mon.
#define SHOW_TYPES_SEEN 3 // Only show types if you've seen a species of the mon.
#define B_SHOW_TYPES SHOW_TYPES_NEVER // When to show type indicators next to Pokémon health bars in battle, while choosing a move after selecting a target Pokémon.
// Pokémon battle sprite settings
#define B_ENEMY_MON_SHADOW_STYLE GEN_LATEST // In Gen4+, all enemy Pokemon will have a shadow drawn beneath them.

View File

@ -1,7 +1,7 @@
#ifndef GUARD_TYPE_ICONS_H
#define GUARD_TYPE_ICONS_H
void LoadTypeIcons(u32);
void LoadTypeIcons(u32 battler);
#define TYPE_ICON_TAG 0x2720
#define TYPE_ICON_TAG_2 0x2721

View File

@ -3696,19 +3696,6 @@ static void DoBattleIntro(void)
case BATTLE_INTRO_STATE_SET_DEX_AND_BATTLE_VARS:
if (!gBattleControllerExecFlags)
{
for (battler = 0; battler < gBattlersCount; battler++)
{
if (GetBattlerSide(battler) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
| BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_TRAINER_HILL)))
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[battler].species), FLAG_SET_SEEN, gBattleMons[battler].personality);
}
}
gBattleStruct->eventsBeforeFirstTurnState = 0;
gBattleStruct->switchInBattlerCounter = 0;
gBattleStruct->overworldWeatherDone = FALSE;
@ -5572,6 +5559,10 @@ static void HandleEndTurn_FinishBattle(void)
GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_NICKNAME, gBattleResults.playerMon2Name);
}
}
else if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[battler].species), FLAG_SET_SEEN, gBattleMons[battler].personality);
}
}
TryPutPokemonTodayOnAir();
}

View File

@ -15,7 +15,8 @@ static void LoadTypeIconsPerBattler(u32, u32);
static bool32 UseDoubleBattleCoords(u32);
static u32 GetMonPublicType(u32, u32);
static bool32 ShouldHideUncaughtType(u32);
static bool32 ShouldHideUncaughtType(u32 species);
static bool32 ShouldHideUnseenType(u32 species);
static u32 GetMonDefensiveTeraType(struct Pokemon *, struct Pokemon*, u32, u32, u32, u32);
static u32 IsIllusionActiveAndTypeUnchanged(struct Pokemon*, u32, u32);
@ -239,7 +240,11 @@ void LoadTypeIcons(u32 battler)
{
u32 position;
if (B_SHOW_TYPES == SHOW_TYPES_NEVER)
struct Pokemon* mon = GetPartyBattlerData(battler);
u32 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
if (B_SHOW_TYPES == SHOW_TYPES_NEVER
|| (B_SHOW_TYPES == SHOW_TYPES_SEEN && !GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN)))
return;
LoadTypeSpritesAndPalettes();
@ -296,7 +301,7 @@ static u32 GetMonPublicType(u32 battlerId, u32 typeNum)
struct Pokemon* monIllusion;
u32 illusionSpecies;
if (ShouldHideUncaughtType(monSpecies))
if (ShouldHideUncaughtType(monSpecies) || ShouldHideUnseenType(monSpecies))
return TYPE_MYSTERY;
monIllusion = GetIllusionMonPtr(battlerId);
@ -316,7 +321,18 @@ static bool32 ShouldHideUncaughtType(u32 species)
if (B_SHOW_TYPES != SHOW_TYPES_CAUGHT)
return FALSE;
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species),FLAG_GET_CAUGHT))
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
return FALSE;
return TRUE;
}
static bool32 ShouldHideUnseenType(u32 species)
{
if (B_SHOW_TYPES != SHOW_TYPES_SEEN)
return FALSE;
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN))
return FALSE;
return TRUE;