diff --git a/include/config/pokemon.h b/include/config/pokemon.h index d2f12e4abd..7bf9450cbb 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -46,6 +46,7 @@ #define P_EV_CAP GEN_LATEST // Since Gen 6, the max EVs per stat is 252 instead of 255. #define P_SHOW_TERA_TYPE GEN_8 // Since Gen 9, the Tera Type is shown on the summary screen. #define P_TM_LITERACY GEN_LATEST // Since Gen 6, TM illiterate Pokémon can learn TMs that teach moves that are in their level-up learnsets. +#define P_CAN_FORGET_HIDDEN_MOVE FALSE // If TRUE, Pokémon can forget any move, even if it is a Hidden Move. #define P_EGG_CYCLE_LENGTH GEN_LATEST // Since Gen 8, egg cycles take half as many steps as before. #define P_TWO_FRAME_FRONT_SPRITES TRUE // In Pokémon Emerald, Pokémon front sprites always consist of two frames. This config can revert it to only use the first frame, as is the case in the other Gen 3 games. #define P_ONLY_OBTAINABLE_SHINIES FALSE // If TRUE, Pokémon encountered in the Battle Pyramid won't be shiny. diff --git a/src/party_menu.c b/src/party_menu.c index c46c74393f..2fd666d10d 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4016,7 +4016,7 @@ bool8 FieldCallback_PrepareFadeInFromMenu(void) // Same as above, but removes follower pokemon bool8 FieldCallback_PrepareFadeInForTeleport(void) -{ +{ RemoveFollowingPokemon(); return FieldCallback_PrepareFadeInFromMenu(); } @@ -7762,6 +7762,6 @@ void IsLastMonThatKnowsSurf(void) } } if (AnyStorageMonWithMove(move) != TRUE) - gSpecialVar_Result = TRUE; + gSpecialVar_Result = !P_CAN_FORGET_HIDDEN_MOVE; } } diff --git a/src/pokemon.c b/src/pokemon.c index 1dc44508e3..e5094c8925 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5839,6 +5839,10 @@ const u32 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFema bool8 IsMoveHM(u16 move) { int i = 0; + + if (P_CAN_FORGET_HIDDEN_MOVE) + return FALSE; + while (sHMMoves[i] != HM_MOVES_END) { if (sHMMoves[i++] == move) @@ -6926,7 +6930,7 @@ void UpdateDaysPassedSinceFormChange(u16 days) if (daysSinceFormChange == 0) { u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_DAYS_PASSED, 0); - + if (targetSpecies != SPECIES_NONE) { SetMonData(mon, MON_DATA_SPECIES, &targetSpecies);