From 0aad2a9ba7b358f559c50ecc07a8752400f1d64f Mon Sep 17 00:00:00 2001 From: kittenchilly Date: Fri, 3 May 2024 12:32:06 -0500 Subject: [PATCH] Change Battle Frontier validation to species flag (#4341) * Split isLegendary into isRestrictedLegendary and isSubLegendary * Address reviews and fix build * Update frontier_util.c * Remove gFrontierBannedSpecies , fast edition * Sped up name generation * More speed up * Split Frontier restriction into its own flag * Mythicals shouldn't be banned always anymore * u32 --------- Co-authored-by: Eduardo Quezada --- include/frontier_util.h | 2 - include/pokemon.h | 7 +- src/battle_util.c | 2 +- .../pokemon/species_info/gen_1_families.h | 4 + .../pokemon/species_info/gen_2_families.h | 3 + .../pokemon/species_info/gen_3_families.h | 11 +++ .../pokemon/species_info/gen_4_families.h | 12 +++ .../pokemon/species_info/gen_5_families.h | 11 +++ .../pokemon/species_info/gen_6_families.h | 13 +++ .../pokemon/species_info/gen_7_families.h | 15 ++++ .../pokemon/species_info/gen_8_families.h | 11 +++ .../pokemon/species_info/gen_9_families.h | 46 +++++----- src/frontier_util.c | 85 ++++++++----------- src/party_menu.c | 10 +-- test/battle/ability/booster_energy.c | 4 +- 15 files changed, 152 insertions(+), 84 deletions(-) diff --git a/include/frontier_util.h b/include/frontier_util.h index f445949ef9..637b7f91bb 100644 --- a/include/frontier_util.h +++ b/include/frontier_util.h @@ -25,6 +25,4 @@ u8 GetFrontierBrainMonNature(u8 monId); u8 GetFrontierBrainMonEvs(u8 monId, u8 evStatId); s32 GetFronterBrainSymbol(void); -extern const u16 gFrontierBannedSpecies[]; - #endif // GUARD_FRONTIER_UTIL_H diff --git a/include/pokemon.h b/include/pokemon.h index 90450e0a13..1ff7cfaf44 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -425,8 +425,8 @@ struct SpeciesInfo /*0x8C*/ /* 0x7A */ u32 isLegendary:1; u32 isMythical:1; u32 isUltraBeast:1; + u32 isParadox:1; u32 isTotem:1; - u32 isParadoxForm:1; u32 isMegaEvolution:1; u32 isPrimalReversion:1; u32 isUltraBurst:1; @@ -438,8 +438,9 @@ struct SpeciesInfo /*0x8C*/ u32 cannotBeTraded:1; u32 allPerfectIVs:1; u32 dexForceRequired:1; // This species will be taken into account for Pokédex ratings even if they have the "isMythical" flag set. - u32 tmIlliterate:1; // This species will be unable to learn the universal moves. - u32 padding4:15; + u32 tmIlliterate:1; // This species will be unable to learn the universal moves. + u32 isFrontierBanned:1; // This species is not allowed to participate in Battle Frontier facilities. + u32 padding4:14; // Move Data /* 0x80 */ const struct LevelUpMove *levelUpLearnset; /* 0x84 */ const u16 *teachableLearnset; diff --git a/src/battle_util.c b/src/battle_util.c index a0b5435bc9..7446c05a23 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -10731,7 +10731,7 @@ bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId) else if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) return FALSE; else if (holdEffect == HOLD_EFFECT_BOOSTER_ENERGY - && (gSpeciesInfo[gBattleMons[gBattlerAttacker].species].isParadoxForm || gSpeciesInfo[gBattleMons[gBattlerTarget].species].isParadoxForm)) + && (gSpeciesInfo[gBattleMons[gBattlerAttacker].species].isParadox || gSpeciesInfo[gBattleMons[gBattlerTarget].species].isParadox)) return FALSE; else return TRUE; diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index e8de1682c5..10910bf85a 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -15461,6 +15461,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconPalIndex = 2, FOOTPRINT(Mewtwo) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewtwoLevelUpLearnset, .teachableLearnset = sMewtwoTeachableLearnset, .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, @@ -15518,6 +15519,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Mewtwo) .isLegendary = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewtwoLevelUpLearnset, .teachableLearnset = sMewtwoTeachableLearnset, .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, @@ -15575,6 +15577,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Mewtwo) .isLegendary = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewtwoLevelUpLearnset, .teachableLearnset = sMewtwoTeachableLearnset, .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, @@ -15642,6 +15645,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconPalIndex = 0, FOOTPRINT(Mew) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewLevelUpLearnset, .teachableLearnset = sMewTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index fcc1e18cd7..16f6a43f7d 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -6325,6 +6325,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconPalIndex = 0, FOOTPRINT(Lugia) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sLugiaLevelUpLearnset, .teachableLearnset = sLugiaTeachableLearnset, }, @@ -6389,6 +6390,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconPalIndex = 1, FOOTPRINT(HoOh) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sHoOhLevelUpLearnset, .teachableLearnset = sHoOhTeachableLearnset, }, @@ -6453,6 +6455,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconPalIndex = 1, FOOTPRINT(Celebi) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCelebiLevelUpLearnset, .teachableLearnset = sCelebiTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_3_families.h b/src/data/pokemon/species_info/gen_3_families.h index fb34fdc4af..af37135d77 100644 --- a/src/data/pokemon/species_info/gen_3_families.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -9340,6 +9340,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 2, FOOTPRINT(Kyogre) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyogreLevelUpLearnset, .teachableLearnset = sKyogreTeachableLearnset, .formSpeciesIdTable = sKyogreFormSpeciesIdTable, @@ -9396,6 +9397,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Kyogre) .isLegendary = TRUE, .isPrimalReversion = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyogreLevelUpLearnset, .teachableLearnset = sKyogreTeachableLearnset, .formSpeciesIdTable = sKyogreFormSpeciesIdTable, @@ -9460,6 +9462,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 0, FOOTPRINT(Groudon) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGroudonLevelUpLearnset, .teachableLearnset = sGroudonTeachableLearnset, .formSpeciesIdTable = sGroudonFormSpeciesIdTable, @@ -9517,6 +9520,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Groudon) .isLegendary = TRUE, .isPrimalReversion = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGroudonLevelUpLearnset, .teachableLearnset = sGroudonTeachableLearnset, .formSpeciesIdTable = sGroudonFormSpeciesIdTable, @@ -9584,6 +9588,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 1, FOOTPRINT(Rayquaza) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sRayquazaLevelUpLearnset, .teachableLearnset = sRayquazaTeachableLearnset, .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, @@ -9643,6 +9648,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Rayquaza) .isLegendary = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sRayquazaLevelUpLearnset, .teachableLearnset = sRayquazaTeachableLearnset, .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, @@ -9710,6 +9716,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 0, FOOTPRINT(Jirachi) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sJirachiLevelUpLearnset, .teachableLearnset = sJirachiTeachableLearnset, }, @@ -9771,6 +9778,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 0, FOOTPRINT(Deoxys) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysNormalLevelUpLearnset, .teachableLearnset = sDeoxysNormalTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, @@ -9823,6 +9831,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 0, FOOTPRINT(Deoxys) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysAttackLevelUpLearnset, .teachableLearnset = sDeoxysAttackTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, @@ -9875,6 +9884,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 0, FOOTPRINT(Deoxys) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysDefenseLevelUpLearnset, .teachableLearnset = sDeoxysDefenseTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, @@ -9927,6 +9937,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconPalIndex = 0, FOOTPRINT(Deoxys) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysSpeedLevelUpLearnset, .teachableLearnset = sDeoxysSpeedTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index d388eb13ee..b8f54203f2 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -4786,6 +4786,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 2, FOOTPRINT(Dialga) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDialgaLevelUpLearnset, .teachableLearnset = sDialgaTeachableLearnset, .formSpeciesIdTable = sDialgaFormSpeciesIdTable, @@ -4841,6 +4842,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 0, FOOTPRINT(Dialga) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDialgaLevelUpLearnset, .teachableLearnset = sDialgaTeachableLearnset, .formSpeciesIdTable = sDialgaFormSpeciesIdTable, @@ -4906,6 +4908,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 2, FOOTPRINT(Palkia) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPalkiaLevelUpLearnset, .teachableLearnset = sPalkiaTeachableLearnset, .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, @@ -4961,6 +4964,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 2, FOOTPRINT(Palkia) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPalkiaLevelUpLearnset, .teachableLearnset = sPalkiaTeachableLearnset, .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, @@ -5148,6 +5152,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 0, FOOTPRINT(Giratina) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGiratinaLevelUpLearnset, .teachableLearnset = sGiratinaTeachableLearnset, .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, @@ -5204,6 +5209,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 0, FOOTPRINT(Giratina) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGiratinaLevelUpLearnset, .teachableLearnset = sGiratinaTeachableLearnset, .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, @@ -5330,6 +5336,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 0, FOOTPRINT(Phione) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPhioneLevelUpLearnset, .teachableLearnset = sPhioneTeachableLearnset, }, @@ -5390,6 +5397,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 0, FOOTPRINT(Manaphy) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sManaphyLevelUpLearnset, .teachableLearnset = sManaphyTeachableLearnset, }, @@ -5453,6 +5461,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 0, FOOTPRINT(Darkrai) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDarkraiLevelUpLearnset, .teachableLearnset = sDarkraiTeachableLearnset, }, @@ -5518,6 +5527,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 1, FOOTPRINT(Shaymin) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sShayminLandLevelUpLearnset, .teachableLearnset = sShayminLandTeachableLearnset, .formSpeciesIdTable = sShayminFormSpeciesIdTable, @@ -5580,6 +5590,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 1, FOOTPRINT(Shaymin) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sShayminSkyLevelUpLearnset, .teachableLearnset = sShayminSkyTeachableLearnset, .formSpeciesIdTable = sShayminFormSpeciesIdTable, @@ -5653,6 +5664,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ .formChangeTable = sArceusFormChangeTable, \ .isMythical = TRUE, \ + .isFrontierBanned = TRUE, \ } [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal, 1), diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index 9f7200849b..2d4a0abeb0 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -53,6 +53,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, FOOTPRINT(Victini) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sVictiniLevelUpLearnset, .teachableLearnset = sVictiniTeachableLearnset, }, @@ -9747,6 +9748,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, FOOTPRINT(Reshiram) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sReshiramLevelUpLearnset, .teachableLearnset = sReshiramTeachableLearnset, }, @@ -9802,6 +9804,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 2, FOOTPRINT(Zekrom) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZekromLevelUpLearnset, .teachableLearnset = sZekromTeachableLearnset, }, @@ -9973,6 +9976,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, FOOTPRINT(Kyurem) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyuremLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, .formSpeciesIdTable = sKyuremFormSpeciesIdTable, @@ -10036,6 +10040,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = FOOTPRINT(Kyurem) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyuremWhiteLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, .formSpeciesIdTable = sKyuremFormSpeciesIdTable, @@ -10098,6 +10103,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = FOOTPRINT(Kyurem) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyuremBlackLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, .formSpeciesIdTable = sKyuremFormSpeciesIdTable, @@ -10155,6 +10161,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, FOOTPRINT(Keldeo) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKeldeoLevelUpLearnset, .teachableLearnset = sKeldeoTeachableLearnset, .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, @@ -10211,6 +10218,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, FOOTPRINT(Keldeo) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKeldeoLevelUpLearnset, .teachableLearnset = sKeldeoTeachableLearnset, .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, @@ -10274,6 +10282,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 4, FOOTPRINT(Meloetta) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMeloettaLevelUpLearnset, .teachableLearnset = sMeloettaTeachableLearnset, .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, @@ -10334,6 +10343,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, FOOTPRINT(Meloetta) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMeloettaLevelUpLearnset, .teachableLearnset = sMeloettaTeachableLearnset, .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, @@ -10393,6 +10403,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .formSpeciesIdTable = sGenesectFormSpeciesIdTable, \ .formChangeTable = sGenesectFormChangeTable, \ .isMythical = TRUE, \ + .isFrontierBanned = TRUE, \ } [SPECIES_GENESECT] = GENESECT_SPECIES_INFO(Genesect), diff --git a/src/data/pokemon/species_info/gen_6_families.h b/src/data/pokemon/species_info/gen_6_families.h index d49628cb0c..6cd3196bc5 100644 --- a/src/data/pokemon/species_info/gen_6_families.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -4677,6 +4677,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 0, FOOTPRINT(Xerneas) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sXerneasLevelUpLearnset, .teachableLearnset = sXerneasTeachableLearnset, .formSpeciesIdTable = sXerneasFormSpeciesIdTable, @@ -4728,6 +4729,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 0, FOOTPRINT(Xerneas) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sXerneasLevelUpLearnset, .teachableLearnset = sXerneasTeachableLearnset, .formSpeciesIdTable = sXerneasFormSpeciesIdTable, @@ -4786,6 +4788,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 0, FOOTPRINT(Yveltal) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sYveltalLevelUpLearnset, .teachableLearnset = sYveltalTeachableLearnset, }, @@ -4838,6 +4841,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -4889,6 +4893,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -4940,6 +4945,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -4992,6 +4998,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -5048,6 +5055,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -5106,6 +5114,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Diancie) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDiancieLevelUpLearnset, .teachableLearnset = sDiancieTeachableLearnset, .formSpeciesIdTable = sDiancieFormSpeciesIdTable, @@ -5164,6 +5173,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = FOOTPRINT(Diancie) .isMythical = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDiancieLevelUpLearnset, .teachableLearnset = sDiancieTeachableLearnset, .formSpeciesIdTable = sDiancieFormSpeciesIdTable, @@ -5223,6 +5233,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 0, FOOTPRINT(Hoopa) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sHoopaConfinedLevelUpLearnset, .teachableLearnset = sHoopaConfinedTeachableLearnset, .formSpeciesIdTable = sHoopaFormSpeciesIdTable, @@ -5279,6 +5290,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 0, FOOTPRINT(Hoopa) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sHoopaUnboundLevelUpLearnset, .teachableLearnset = sHoopaUnboundTeachableLearnset, .formSpeciesIdTable = sHoopaFormSpeciesIdTable, @@ -5336,6 +5348,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 0, FOOTPRINT(Volcanion) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sVolcanionLevelUpLearnset, .teachableLearnset = sVolcanionTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_7_families.h b/src/data/pokemon/species_info/gen_7_families.h index 6c4632f0ed..bde6e26838 100644 --- a/src/data/pokemon/species_info/gen_7_families.h +++ b/src/data/pokemon/species_info/gen_7_families.h @@ -4754,6 +4754,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Cosmog) .isLegendary = TRUE, .tmIlliterate = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCosmogLevelUpLearnset, .teachableLearnset = sCosmogTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_COSMOEM}), @@ -4811,6 +4812,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Cosmoem) .isLegendary = TRUE, .tmIlliterate = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCosmoemLevelUpLearnset, .teachableLearnset = sCosmoemTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, @@ -4866,6 +4868,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, FOOTPRINT(Solgaleo) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sSolgaleoLevelUpLearnset, .teachableLearnset = sSolgaleoTeachableLearnset, }, @@ -4920,6 +4923,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 2, FOOTPRINT(Lunala) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sLunalaLevelUpLearnset, .teachableLearnset = sLunalaTeachableLearnset, }, @@ -5368,6 +5372,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, FOOTPRINT(Necrozma) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5425,6 +5430,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Necrozma) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5483,6 +5489,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Necrozma) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5545,6 +5552,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .isLegendary = TRUE, .isUltraBurst = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5603,6 +5611,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, FOOTPRINT(Magearna) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMagearnaLevelUpLearnset, .teachableLearnset = sMagearnaTeachableLearnset, .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, @@ -5656,6 +5665,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, FOOTPRINT(Magearna) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMagearnaLevelUpLearnset, .teachableLearnset = sMagearnaTeachableLearnset, .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, @@ -5714,6 +5724,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, FOOTPRINT(Marshadow) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMarshadowLevelUpLearnset, .teachableLearnset = sMarshadowTeachableLearnset, }, @@ -5987,6 +5998,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, FOOTPRINT(Zeraora) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZeraoraLevelUpLearnset, .teachableLearnset = sZeraoraTeachableLearnset, }, @@ -6041,6 +6053,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 2, FOOTPRINT(Meltan) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMeltanLevelUpLearnset, .teachableLearnset = sMeltanTeachableLearnset, }, @@ -6093,6 +6106,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 2, FOOTPRINT(Melmetal) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMelmetalLevelUpLearnset, .teachableLearnset = sMelmetalTeachableLearnset, .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, @@ -6150,6 +6164,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Melmetal) .isMythical = TRUE, .isGigantamax = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMelmetalLevelUpLearnset, .teachableLearnset = sMelmetalTeachableLearnset, .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 65c5659f7b..d36066bf58 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -5609,6 +5609,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 2, FOOTPRINT(Zacian) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZacianLevelUpLearnset, .teachableLearnset = sZacianTeachableLearnset, .formSpeciesIdTable = sZacianFormSpeciesIdTable, @@ -5664,6 +5665,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 2, FOOTPRINT(Zacian) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZacianLevelUpLearnset, .teachableLearnset = sZacianTeachableLearnset, .formSpeciesIdTable = sZacianFormSpeciesIdTable, @@ -5721,6 +5723,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 2, FOOTPRINT(Zamazenta) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZamazentaLevelUpLearnset, .teachableLearnset = sZamazentaTeachableLearnset, .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, @@ -5776,6 +5779,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 2, FOOTPRINT(Zamazenta) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZamazentaLevelUpLearnset, .teachableLearnset = sZamazentaTeachableLearnset, .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, @@ -5834,6 +5838,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 0, FOOTPRINT(Eternatus) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sEternatusLevelUpLearnset, .teachableLearnset = sEternatusTeachableLearnset, .formSpeciesIdTable = sEternatusFormSpeciesIdTable, @@ -5889,6 +5894,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 0, FOOTPRINT(Eternatus) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sEternatusLevelUpLearnset, .teachableLearnset = sEternatusTeachableLearnset, .formSpeciesIdTable = sEternatusFormSpeciesIdTable, @@ -6228,6 +6234,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 1, FOOTPRINT(Zarude) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZarudeLevelUpLearnset, .teachableLearnset = sZarudeTeachableLearnset, .formSpeciesIdTable = sZarudeFormSpeciesIdTable, @@ -6281,6 +6288,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 1, FOOTPRINT(Zarude) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZarudeLevelUpLearnset, .teachableLearnset = sZarudeTeachableLearnset, .formSpeciesIdTable = sZarudeFormSpeciesIdTable, @@ -6558,6 +6566,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 0, FOOTPRINT(Calyrex) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCalyrexLevelUpLearnset, .teachableLearnset = sCalyrexTeachableLearnset, .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, @@ -6614,6 +6623,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = FOOTPRINT(Calyrex) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCalyrexIceRiderLevelUpLearnset, .teachableLearnset = sCalyrexIceRiderTeachableLearnset, .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, @@ -6669,6 +6679,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = FOOTPRINT(Calyrex) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCalyrexShadowRiderLevelUpLearnset, .teachableLearnset = sCalyrexShadowRiderTeachableLearnset, .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index d272120cf9..33097c3ef6 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -4390,7 +4390,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_GreatTusk, .iconPalIndex = 0, //FOOTPRINT(GreatTusk) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sGreatTuskLevelUpLearnset, .teachableLearnset = sGreatTuskTeachableLearnset, }, @@ -4445,7 +4445,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_ScreamTail, .iconPalIndex = 0, //FOOTPRINT(ScreamTail) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sScreamTailLevelUpLearnset, .teachableLearnset = sScreamTailTeachableLearnset, }, @@ -4500,7 +4500,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_BruteBonnet, .iconPalIndex = 1, //FOOTPRINT(BruteBonnet) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sBruteBonnetLevelUpLearnset, .teachableLearnset = sBruteBonnetTeachableLearnset, }, @@ -4558,7 +4558,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_FlutterMane, .iconPalIndex = 2, //FOOTPRINT(FlutterMane) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sFlutterManeLevelUpLearnset, .teachableLearnset = sFlutterManeTeachableLearnset, }, @@ -4612,7 +4612,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_SlitherWing, .iconPalIndex = 1, //FOOTPRINT(SlitherWing) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sSlitherWingLevelUpLearnset, .teachableLearnset = sSlitherWingTeachableLearnset, }, @@ -4667,7 +4667,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_SandyShocks, .iconPalIndex = 0, //FOOTPRINT(SandyShocks) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sSandyShocksLevelUpLearnset, .teachableLearnset = sSandyShocksTeachableLearnset, }, @@ -4722,7 +4722,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronTreads, .iconPalIndex = 1, //FOOTPRINT(IronTreads) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronTreadsLevelUpLearnset, .teachableLearnset = sIronTreadsTeachableLearnset, }, @@ -4777,7 +4777,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronBundle, .iconPalIndex = 0, //FOOTPRINT(IronBundle) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronBundleLevelUpLearnset, .teachableLearnset = sIronBundleTeachableLearnset, }, @@ -4832,7 +4832,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronHands, .iconPalIndex = 0, //FOOTPRINT(IronHands) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronHandsLevelUpLearnset, .teachableLearnset = sIronHandsTeachableLearnset, }, @@ -4888,7 +4888,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronJugulis, .iconPalIndex = 0, //FOOTPRINT(IronJugulis) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronJugulisLevelUpLearnset, .teachableLearnset = sIronJugulisTeachableLearnset, }, @@ -4944,7 +4944,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronMoth, .iconPalIndex = 3, //FOOTPRINT(IronMoth) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronMothLevelUpLearnset, .teachableLearnset = sIronMothTeachableLearnset, }, @@ -4999,7 +4999,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronThorns, .iconPalIndex = 1, //FOOTPRINT(IronThorns) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronThornsLevelUpLearnset, .teachableLearnset = sIronThornsTeachableLearnset, }, @@ -5598,7 +5598,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_RoaringMoon, .iconPalIndex = 0, //FOOTPRINT(RoaringMoon) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sRoaringMoonLevelUpLearnset, .teachableLearnset = sRoaringMoonTeachableLearnset, }, @@ -5652,7 +5652,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronValiant, .iconPalIndex = 1, //FOOTPRINT(IronValiant) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronValiantLevelUpLearnset, .teachableLearnset = sIronValiantTeachableLearnset, }, @@ -5708,6 +5708,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, //FOOTPRINT(Koraidon) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKoraidonLevelUpLearnset, .teachableLearnset = sKoraidonTeachableLearnset, }, @@ -5763,6 +5764,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 2, //FOOTPRINT(Miraidon) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMiraidonLevelUpLearnset, .teachableLearnset = sMiraidonTeachableLearnset, }, @@ -5816,7 +5818,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_WalkingWake, .iconPalIndex = 2, //FOOTPRINT(WalkingWake) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sWalkingWakeLevelUpLearnset, .teachableLearnset = sWalkingWakeTeachableLearnset, }, @@ -5870,7 +5872,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronLeaves, .iconPalIndex = 1, //FOOTPRINT(IronLeaves) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronLeavesLevelUpLearnset, .teachableLearnset = sIronLeavesTeachableLearnset, }, @@ -6369,7 +6371,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_GougingFire, .iconPalIndex = 5, //FOOTPRINT(GougingFire) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sGougingFireLevelUpLearnset, .teachableLearnset = sGougingFireTeachableLearnset, }, @@ -6424,7 +6426,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_RagingBolt, .iconPalIndex = 2, //FOOTPRINT(RagingBolt) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sRagingBoltLevelUpLearnset, .teachableLearnset = sRagingBoltTeachableLearnset, }, @@ -6478,7 +6480,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronBoulder, .iconPalIndex = 5, //FOOTPRINT(IronBoulder) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronBoulderLevelUpLearnset, .teachableLearnset = sIronBoulderTeachableLearnset, }, @@ -6533,7 +6535,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronCrown, .iconPalIndex = 3, //FOOTPRINT(IronCrown) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronCrownLevelUpLearnset, .teachableLearnset = sIronCrownTeachableLearnset, }, @@ -6589,6 +6591,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, //FOOTPRINT(Terapagos) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, .teachableLearnset = sTerapagosTeachableLearnset, .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, @@ -6645,6 +6648,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, //FOOTPRINT(Terapagos) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, .teachableLearnset = sTerapagosTeachableLearnset, .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, @@ -6700,6 +6704,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, //FOOTPRINT(Terapagos) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, .teachableLearnset = sTerapagosTeachableLearnset, .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, @@ -6757,6 +6762,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, //FOOTPRINT(Pecharunt) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPecharuntLevelUpLearnset, .teachableLearnset = sPecharuntTeachableLearnset, }, diff --git a/src/frontier_util.c b/src/frontier_util.c index 7f9b37b957..ca8c76a0fd 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -623,20 +623,6 @@ static const u8 sFrontierBrainObjEventGfx[NUM_FRONTIER_FACILITIES][2] = [FRONTIER_FACILITY_PYRAMID] = {OBJ_EVENT_GFX_BRANDON, FALSE}, }; -const u16 gFrontierBannedSpecies[] = -{ - SPECIES_MEW, SPECIES_MEWTWO, - SPECIES_HO_OH, SPECIES_LUGIA, SPECIES_CELEBI, - SPECIES_KYOGRE, SPECIES_GROUDON, SPECIES_RAYQUAZA, SPECIES_JIRACHI, SPECIES_DEOXYS, - SPECIES_DIALGA, SPECIES_PALKIA, SPECIES_GIRATINA, SPECIES_MANAPHY, SPECIES_PHIONE, SPECIES_DARKRAI, SPECIES_SHAYMIN, SPECIES_ARCEUS, - SPECIES_VICTINI, SPECIES_RESHIRAM, SPECIES_ZEKROM, SPECIES_KYUREM, SPECIES_KELDEO, SPECIES_MELOETTA, SPECIES_GENESECT, - SPECIES_XERNEAS, SPECIES_YVELTAL, SPECIES_ZYGARDE, SPECIES_DIANCIE, SPECIES_HOOPA, SPECIES_VOLCANION, - SPECIES_COSMOG, SPECIES_COSMOEM, SPECIES_SOLGALEO, SPECIES_LUNALA, SPECIES_NECROZMA, SPECIES_MAGEARNA, SPECIES_MARSHADOW, SPECIES_ZERAORA, SPECIES_MELTAN, SPECIES_MELMETAL, - SPECIES_ZACIAN, SPECIES_ZAMAZENTA, SPECIES_ETERNATUS, SPECIES_CALYREX, SPECIES_ZARUDE, - SPECIES_KORAIDON, SPECIES_MIRAIDON, - 0xFFFF -}; - static const u8 *const sRecordsWindowChallengeTexts[][2] = { [RANKING_HALL_TOWER_SINGLES] = {gText_BattleTower2, gText_FacilitySingle}, @@ -1899,26 +1885,20 @@ static void CheckBattleTypeFlag(void) #define SPECIES_PER_LINE 3 -static u8 AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBannedMonsCaught) +static void AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBannedMonsCaught) { - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + if (numBannedMonsCaught == count) + StringAppend(gStringVar1, gText_SpaceAndSpace); + else if (numBannedMonsCaught > count) + StringAppend(gStringVar1, gText_CommaSpace); + if ((count % SPECIES_PER_LINE) == 0) { - count++; - if (numBannedMonsCaught == count) - StringAppend(gStringVar1, gText_SpaceAndSpace); - else if (numBannedMonsCaught > count) - StringAppend(gStringVar1, gText_CommaSpace); - if ((count % SPECIES_PER_LINE) == 0) - { - if (count == SPECIES_PER_LINE) - StringAppend(gStringVar1, gText_NewLine); - else - StringAppend(gStringVar1, gText_LineBreak); - } - StringAppend(gStringVar1, GetSpeciesName(species)); + if (count == SPECIES_PER_LINE) + StringAppend(gStringVar1, gText_NewLine); + else + StringAppend(gStringVar1, gText_LineBreak); } - - return count; + StringAppend(gStringVar1, GetSpeciesName(species)); } static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count) @@ -1927,13 +1907,7 @@ static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monL if (species == SPECIES_EGG || species == SPECIES_NONE) return; - - for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF - && gFrontierBannedSpecies[i] != GET_BASE_SPECIES_ID(species) - && IsSpeciesEnabled(gFrontierBannedSpecies[i]); i++) - ; - - if (gFrontierBannedSpecies[i] != 0xFFFF) + if (gSpeciesInfo[species].isFrontierBanned) return; if (lvlMode == FRONTIER_LVL_50 && monLevel > FRONTIER_MAX_LEVEL_50) return; @@ -2019,28 +1993,41 @@ static void CheckPartyIneligibility(void) if (numEligibleMons < toChoose) { - s32 i; - s32 caughtBannedMons = 0; - s32 species = gFrontierBannedSpecies[0]; - for (i = 0; species != 0xFFFF; i++, species = gFrontierBannedSpecies[i]) + u32 i; + u32 baseSpecies = 0; + u32 totalCaughtBanned = 0; + u32 caughtBanned[100] = {0}; + + for (i = 0; i < NUM_SPECIES; i++) { - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) - caughtBannedMons++; + if (totalCaughtBanned >= ARRAY_COUNT(caughtBanned)) + break; + baseSpecies = GET_BASE_SPECIES_ID(i); + if (baseSpecies == i) + { + if (gSpeciesInfo[baseSpecies].isFrontierBanned) + { + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(baseSpecies), FLAG_GET_CAUGHT)) + { + caughtBanned[totalCaughtBanned] = baseSpecies; + totalCaughtBanned++; + } + } + } } gStringVar1[0] = EOS; gSpecialVar_0x8004 = TRUE; - count = 0; - for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF; i++) - count = AppendCaughtBannedMonSpeciesName(gFrontierBannedSpecies[i], count, caughtBannedMons); + for (i = 0; i < totalCaughtBanned; i++) + AppendCaughtBannedMonSpeciesName(caughtBanned[i], i+1, totalCaughtBanned); - if (count == 0) + if (totalCaughtBanned == 0) { StringAppend(gStringVar1, gText_Space2); StringAppend(gStringVar1, gText_Are); } else { - if (count % SPECIES_PER_LINE == SPECIES_PER_LINE - 1) + if (totalCaughtBanned % SPECIES_PER_LINE == SPECIES_PER_LINE - 1) StringAppend(gStringVar1, gText_LineBreak); else StringAppend(gStringVar1, gText_Space2); diff --git a/src/party_menu.c b/src/party_menu.c index af88db790d..5fa741385d 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -6926,8 +6926,7 @@ static u8 GetPartySlotEntryStatus(s8 slot) static bool8 GetBattleEntryEligibility(struct Pokemon *mon) { - u16 i = 0; - u16 species; + u32 species; if (GetMonData(mon, MON_DATA_IS_EGG) || GetMonData(mon, MON_DATA_LEVEL) > GetBattleEntryLevelCap() @@ -6948,11 +6947,8 @@ static bool8 GetBattleEntryEligibility(struct Pokemon *mon) return TRUE; default: // Battle Frontier species = GetMonData(mon, MON_DATA_SPECIES); - for (; gFrontierBannedSpecies[i] != 0xFFFF; i++) - { - if (gFrontierBannedSpecies[i] == GET_BASE_SPECIES_ID(species)) - return FALSE; - } + if (gSpeciesInfo[species].isFrontierBanned) + return FALSE; return TRUE; } } diff --git a/test/battle/ability/booster_energy.c b/test/battle/ability/booster_energy.c index 3d9b41d5aa..a63f462b72 100644 --- a/test/battle/ability/booster_energy.c +++ b/test/battle/ability/booster_energy.c @@ -185,7 +185,7 @@ SINGLE_BATTLE_TEST("Booster Energy increases special defense by 30% if it is the SINGLE_BATTLE_TEST("Booster Energy can't be flung if a Paradox species is involved") { GIVEN { - ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadoxForm == TRUE); + ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadox == TRUE); PLAYER(SPECIES_IRON_MOTH); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); } } WHEN { @@ -199,7 +199,7 @@ SINGLE_BATTLE_TEST("Booster Energy can't be flung if a Paradox species is involv SINGLE_BATTLE_TEST("Booster Energy can't be tricked if a Paradox species is involved") { GIVEN { - ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadoxForm == TRUE); + ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadox == TRUE); PLAYER(SPECIES_IRON_MOTH) { Item(ITEM_BERRY_JUICE); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); } } WHEN {