diff --git a/include/config/pokemon.h b/include/config/pokemon.h index 2697c605c..7bf9450cb 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -39,15 +39,18 @@ #define P_ARCEUS_UNIQUE_FORM_ICONS GEN_LATEST // Since Gen 9, Arceus additionally changes its icon to reflect its current form. // Other settings -#define P_CUSTOM_GENDER_DIFF_ICONS TRUE // If TRUE, will give more Pokémon custom icons for their female forms, i.e. Hippopotas and Hippowdon -#define P_FOOTPRINTS TRUE // If TRUE, Pokémon will have footprints (as was the case up to Gen 5 and in BDSP). Disabling this saves some ROM space. -#define P_CRIES_ENABLED TRUE // If TRUE, Pokémon will have cries. Disabling this saves around a LOT of ROM space (over 25%!), but instead we recommend disabling individual unused Pokémon families in include/config/species_enabled.h. -#define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. -#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_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_CUSTOM_GENDER_DIFF_ICONS TRUE // If TRUE, will give more Pokémon custom icons for their female forms, i.e. Hippopotas and Hippowdon +#define P_FOOTPRINTS TRUE // If TRUE, Pokémon will have footprints (as was the case up to Gen 5 and in BDSP). Disabling this saves some ROM space. +#define P_CRIES_ENABLED TRUE // If TRUE, Pokémon will have cries. Disabling this saves around a LOT of ROM space (over 25%!), but instead we recommend disabling individual unused Pokémon families in include/config/species_enabled.h. +#define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. +#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. +#define P_NO_SHINIES_WITHOUT_POKEBALLS FALSE // If TRUE, Pokémon encountered when the player is out of Poké Balls won't be shiny // Learnset helper toggles #define P_LEARNSET_HELPER_TEACHABLE TRUE // If TRUE, teachable_learnsets.h will be populated by tools/learnset_helpers/teachable.py using the included JSON files based on available TMs and tutors. diff --git a/include/constants/form_change_types.h b/include/constants/form_change_types.h index ac1f53bb5..74bc16cf2 100644 --- a/include/constants/form_change_types.h +++ b/include/constants/form_change_types.h @@ -129,4 +129,9 @@ // param1: tera type #define FORM_CHANGE_BATTLE_TERASTALLIZATION 22 +// Form change that activates at midnight after a certain amount of days has passed. +// Adding this form change will automatically make the countdown start as soon the Pokémon changes into a species other than the one specified for this form change. +// param1: amount of days +#define FORM_CHANGE_DAYS_PASSED 23 + #endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H diff --git a/include/item.h b/include/item.h index 7c90a0b56..52e3533e6 100644 --- a/include/item.h +++ b/include/item.h @@ -85,6 +85,7 @@ void SortAndCompactBagPocket(struct BagPocket * pocket); u8 CountItemsInPC(void); void ApplyNewEncryptionKeyToBagItems_(u32 newKey); bool8 HasAtLeastOneBerry(void); +bool8 HasAtLeastOnePokeBall(void); bool8 IsItemTM(u16 itemId); bool8 IsItemHM(u16 itemId); diff --git a/include/pokemon.h b/include/pokemon.h index 5e3b42ac4..6573db154 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -28,8 +28,10 @@ enum { MON_DATA_IS_SHINY, MON_DATA_HIDDEN_NATURE, MON_DATA_HP_LOST, + MON_DATA_DAYS_SINCE_FORM_CHANGE, MON_DATA_ENCRYPT_SEPARATOR, MON_DATA_NICKNAME, + MON_DATA_NICKNAME10, MON_DATA_SPECIES, MON_DATA_HELD_ITEM, MON_DATA_MOVE1, @@ -248,8 +250,9 @@ struct BoxPokemon u8 isBadEgg:1; u8 hasSpecies:1; u8 isEgg:1; - u8 blockBoxRS:1; // Unused, but Pokémon Box Ruby & Sapphire will refuse to deposit a Pokémon with this flag set - u8 unused_13:4; + u8 blockBoxRS:1; // Unused, but Pokémon Box Ruby & Sapphire will refuse to deposit a Pokémon with this flag set. + u8 daysSinceFormChange:3; // 7 days. + u8 unused_13:1; u8 otName[PLAYER_NAME_LENGTH]; u8 markings:4; u8 compressedStatus:4; @@ -793,7 +796,7 @@ bool32 IsSpeciesInKantoDex(u16 species); u16 KantoToNationalDexNum(u16 kantoNum); u16 NationalToKantoDexNum(u16 nationalNum); u16 HoennToNationalDexNum(u16 hoennNum); -u16 SpeciesToCryId(u16 species); +u16 GetCryIdBySpecies(u16 species); void DrawSpindaSpots(u32 species, u32 personality, u8 *dest, bool8 isFrontPic); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); bool8 GetPlayerFlankId(void); @@ -866,5 +869,7 @@ const u8 *GetMoveAnimationScript(u16 moveId); u16 KantoNumToSpecies(u16 kantoNum); u16 HoennNumToSpecies(u16 hoennNum); u8 CopyMonToPC(struct Pokemon *mon); +void UpdateDaysPassedSinceFormChange(u16 days); +void TrySetDayLimitToFormChange(struct Pokemon *mon); #endif // GUARD_POKEMON_H diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index 13cb51f53..a6533157f 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -1,5 +1,6 @@ .align 2 gCryTable:: +.if P_CRIES_ENABLED == TRUE .if P_FAMILY_BULBASAUR == TRUE cry Cry_Bulbasaur cry Cry_Ivysaur @@ -2423,9 +2424,11 @@ gCryTable:: .if P_FAMILY_PECHARUNT == TRUE cry Cry_Pecharunt .endif @ P_FAMILY_PECHARUNT +.endif @ P_CRIES_ENABLED .align 2 gCryTable_Reverse:: +.if P_CRIES_ENABLED == TRUE .if P_FAMILY_BULBASAUR == TRUE cry_reverse Cry_Bulbasaur cry_reverse Cry_Ivysaur @@ -4849,3 +4852,4 @@ gCryTable_Reverse:: .if P_FAMILY_PECHARUNT == TRUE cry_reverse Cry_Pecharunt .endif @ P_FAMILY_PECHARUNT +.endif @ P_CRIES_ENABLED diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index 17b8a6821..68eec1ac4 100644 --- a/sound/direct_sound_data.inc +++ b/sound/direct_sound_data.inc @@ -302,6 +302,7 @@ DirectSoundWaveData_sc88pro_accordion:: DirectSoundWaveData_unused_sc55_tom:: .incbin "sound/direct_sound_samples/unused_sc55_tom.bin" +.if P_CRIES_ENABLED == TRUE .if P_FAMILY_BULBASAUR == TRUE .align 2 Cry_Bulbasaur:: @@ -6069,6 +6070,7 @@ Cry_Terapagos:: Cry_Pecharunt:: .incbin "sound/direct_sound_samples/cries/pecharunt.bin" .endif @ P_FAMILY_PECHARUNT +.endif @ P_CRIES_ENABLED .align 2 diff --git a/src/clock.c b/src/clock.c index 433072660..27e6041ea 100644 --- a/src/clock.c +++ b/src/clock.c @@ -52,6 +52,7 @@ static void UpdatePerDay(struct Time *localTime) // UpdateFrontierGambler(daysSince); // SetShoalItemFlag(daysSince); // SetRandomLotteryNumber(daysSince); + UpdateDaysPassedSinceFormChange(daysSince); *days = localTime->days; } } diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 4e3cccba1..a68e0da53 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -21966,10 +21966,10 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_PKMN_OBJECTS_SHARE_PALETTES #endif //OW_POKEMON_OBJECT_EVENTS - // const u32 gMonFrontPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/front.4bpp.lz"); - // const u32 gMonPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/normal.gbapal.lz"); - // const u32 gMonBackPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/back.4bpp.lz"); - // const u32 gMonShinyPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/shiny.gbapal.lz"); + const u32 gMonFrontPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/front.4bpp.lz"); + const u32 gMonPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/normal.gbapal.lz"); + const u32 gMonBackPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/back.4bpp.lz"); + const u32 gMonShinyPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/shiny.gbapal.lz"); const u8 gMonIcon_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/footprint.1bpp"); diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 78de99f14..52f888a55 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -779,6 +779,14 @@ static const struct FormChange sGreninjaBattleBondFormChangeTable[] = { }; #endif //P_FAMILY_FROAKIE +#if P_FAMILY_FURFROU +static const struct FormChange sFurfrouFormChangeTable[] = { + {FORM_CHANGE_WITHDRAW, SPECIES_FURFROU_NATURAL}, + {FORM_CHANGE_DAYS_PASSED, SPECIES_FURFROU_NATURAL, 5}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_FURFROU + #if P_FAMILY_HONEDGE static const struct FormChange sAegislashFormChangeTable[] = { {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH_SHIELD}, @@ -841,8 +849,9 @@ static const struct FormChange sDiancieFormChangeTable[] = { #if P_FAMILY_HOOPA static const struct FormChange sHoopaFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED}, - {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_DAYS_PASSED, SPECIES_HOOPA_CONFINED, 3}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_HOOPA diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index ee9d64648..5a3a896e4 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -1534,7 +1534,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_BIG_PECKS }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Pidgey"), .cryId = CRY_PIDGEY, @@ -1596,7 +1600,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_BIG_PECKS }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Pidgeotto"), .cryId = CRY_PIDGEOTTO, @@ -1668,7 +1676,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_BIG_PECKS }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Pidgeot"), .cryId = CRY_PIDGEOT, @@ -3822,7 +3834,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_NONE, ABILITY_HUSTLE }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Nidoran♀"), .cryId = CRY_NIDORAN_F, @@ -3885,7 +3901,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_NONE, ABILITY_HUSTLE }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Nidorina"), .cryId = CRY_NIDORINA, @@ -3954,7 +3974,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_NONE, ABILITY_SHEER_FORCE }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Nidoqueen"), .cryId = CRY_NIDOQUEEN, @@ -4014,7 +4038,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_NONE, ABILITY_HUSTLE }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Nidoran♂"), .cryId = CRY_NIDORAN_M, @@ -4076,7 +4104,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_NONE, ABILITY_HUSTLE }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Nidorino"), .cryId = CRY_NIDORINO, @@ -4145,7 +4177,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_NONE, ABILITY_SHEER_FORCE }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Nidoking"), .cryId = CRY_NIDOKING, @@ -4216,7 +4252,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = 140, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_FRIEND_GUARD }, + #endif .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, .speciesName = _("Cleffa"), @@ -4281,7 +4321,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = 140, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_FRIEND_GUARD }, + #endif .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, .speciesName = _("Clefairy"), @@ -4352,7 +4396,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = 140, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_UNAWARE }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_UNAWARE }, + #endif .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, .speciesName = _("Clefable"), @@ -4682,7 +4730,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_FRIEND_GUARD }, + #endif .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, .speciesName = _("Igglybuff"), @@ -4747,7 +4799,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_FRIEND_GUARD }, + #endif .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, .speciesName = _("Jigglypuff"), @@ -4818,7 +4874,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRISK }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_FRISK }, + #endif .bodyColor = BODY_COLOR_PINK, .noFlip = TRUE, .speciesName = _("Wigglytuff"), @@ -5363,7 +5423,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP }, + #else + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_DAMP }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Paras"), .cryId = CRY_PARAS, @@ -5429,7 +5493,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP }, + #else + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_DAMP }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Parasect"), .cryId = CRY_PARASECT, @@ -5492,7 +5560,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_COMPOUND_EYES, ABILITY_TINTED_LENS, ABILITY_RUN_AWAY }, + #else + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_RUN_AWAY }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Venonat"), .cryId = CRY_VENONAT, @@ -5557,7 +5629,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SHIELD_DUST, ABILITY_TINTED_LENS, ABILITY_WONDER_SKIN }, + #else + .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_WONDER_SKIN }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Venomoth"), .cryId = CRY_VENOMOTH, @@ -5893,7 +5969,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, + #else + .abilities = { ABILITY_PICKUP, ABILITY_NONE, ABILITY_UNNERVE }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Meowth"), .cryId = CRY_MEOWTH, @@ -5959,7 +6039,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_LIMBER, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, + #else + .abilities = { ABILITY_LIMBER, ABILITY_NONE, ABILITY_UNNERVE }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Persian"), .cryId = CRY_PERSIAN, @@ -6461,7 +6545,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT }, + #else + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Mankey"), .cryId = CRY_MANKEY, @@ -6524,7 +6612,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT }, + #else + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Primeape"), .cryId = CRY_PRIMEAPE, @@ -7453,7 +7545,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + #else + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_STEADFAST }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Machop"), .cryId = CRY_MACHOP, @@ -7516,7 +7612,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + #else + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_STEADFAST }, + #endif .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, .speciesName = _("Machoke"), @@ -7588,7 +7688,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + #else + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_STEADFAST }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Machamp"), .cryId = CRY_MACHAMP, @@ -7652,7 +7756,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + #else + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_STEADFAST }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Machamp"), .cryId = CRY_MACHAMP, @@ -9684,7 +9792,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY }, + #else + .abilities = { ABILITY_THICK_FAT, ABILITY_NONE, ABILITY_ICE_BODY }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Seel"), .cryId = CRY_SEEL, @@ -9746,7 +9858,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY }, + #else + .abilities = { ABILITY_THICK_FAT, ABILITY_NONE, ABILITY_ICE_BODY }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Dewgong"), .cryId = CRY_DEWGONG, @@ -10072,7 +10188,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT }, + #else + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE, ABILITY_OVERCOAT }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Shellder"), .cryId = CRY_SHELLDER, @@ -10137,7 +10257,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT }, + #else + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE, ABILITY_OVERCOAT }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Cloyster"), .cryId = CRY_CLOYSTER, @@ -10709,7 +10833,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_INSOMNIA, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Drowzee"), .cryId = CRY_DROWZEE, @@ -10772,7 +10900,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_INSOMNIA, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Hypno"), .cryId = CRY_HYPNO, @@ -11730,7 +11862,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_GUTS, ABILITY_STEADFAST, ABILITY_VITAL_SPIRIT }, + #else + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_VITAL_SPIRIT }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Tyrogue"), .cryId = CRY_TYROGUE, @@ -11795,7 +11931,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_LIMBER, ABILITY_RECKLESS, ABILITY_UNBURDEN }, + #else + .abilities = { ABILITY_LIMBER, ABILITY_NONE, ABILITY_UNBURDEN }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Hitmonlee"), .cryId = CRY_HITMONLEE, @@ -11855,7 +11995,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_KEEN_EYE, ABILITY_IRON_FIST, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Hitmonchan"), .cryId = CRY_HITMONCHAN, @@ -11916,7 +12060,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INTIMIDATE, ABILITY_TECHNICIAN, ABILITY_STEADFAST }, + #else + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_STEADFAST }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Hitmontop"), .cryId = CRY_HITMONTOP, @@ -12713,7 +12861,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_REGENERATOR }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Tangela"), .cryId = CRY_TANGELA, @@ -12965,7 +13117,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_DRAGON), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP }, + #else + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_DAMP }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Horsea"), .cryId = CRY_HORSEA, @@ -13029,7 +13185,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_DRAGON), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_POISON_POINT, ABILITY_SNIPER, ABILITY_DAMP }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_NONE, ABILITY_DAMP }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Seadra"), .cryId = CRY_SEADRA, @@ -13101,7 +13261,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_DRAGON), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP }, + #else + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_DAMP }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Kingdra"), .cryId = CRY_KINGDRA, @@ -13431,7 +13595,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN }, + #else + .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_TECHNICIAN }, + #endif .bodyColor = BODY_COLOR_PINK, .speciesName = _("Mime Jr."), .cryId = CRY_MIME_JR, @@ -13688,7 +13856,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_STEADFAST }, + #else + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_STEADFAST }, + #endif .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Scyther"), .cryId = CRY_SCYTHER, @@ -13756,7 +13928,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_LIGHT_METAL }, + #else + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_LIGHT_METAL }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Scizor"), .cryId = CRY_SCIZOR, @@ -13944,7 +14120,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_HYDRATION }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_HYDRATION }, + #endif .bodyColor = BODY_COLOR_PINK, .speciesName = _("Smoochum"), .cryId = CRY_SMOOCHUM, @@ -14008,7 +14188,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_DRY_SKIN }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_DRY_SKIN }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Jynx"), .cryId = CRY_JYNX, @@ -14472,7 +14656,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_HYPER_CUTTER, ABILITY_MOLD_BREAKER, ABILITY_MOXIE }, + #else + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_NONE, ABILITY_MOXIE }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Pinsir"), .cryId = CRY_PINSIR, @@ -14597,7 +14785,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_SHEER_FORCE }, + #else + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_SHEER_FORCE }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Tauros"), .cryId = CRY_TAUROS, @@ -15212,7 +15404,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION }, + #else + .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE, ABILITY_ANTICIPATION }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Eevee"), .cryId = CRY_EEVEE, @@ -15892,7 +16088,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC }, + #else + .abilities = { ABILITY_TRACE, ABILITY_NONE, ABILITY_ANALYTIC }, + #endif .bodyColor = BODY_COLOR_PINK, .speciesName = _("Porygon"), .cryId = CRY_PORYGON, @@ -15955,7 +16155,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC }, + #else + .abilities = { ABILITY_TRACE, ABILITY_NONE, ABILITY_ANALYTIC }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Porygon2"), .cryId = CRY_PORYGON2, diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index ed6e9e23f..1bfbb41be 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -2238,7 +2238,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_INFILTRATOR }, + #endif .bodyColor = BODY_COLOR_PINK, .speciesName = _("Hoppip"), .cryId = CRY_HOPPIP, @@ -2301,7 +2305,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_INFILTRATOR }, + #endif .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Skiploom"), .cryId = CRY_SKIPLOOM, @@ -2371,7 +2379,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_INFILTRATOR }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Jumpluff"), .cryId = CRY_JUMPLUFF, @@ -2568,7 +2580,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_EARLY_BIRD }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Sunkern"), .cryId = CRY_SUNKERN, @@ -2630,7 +2646,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_EARLY_BIRD }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Sunflora"), .cryId = CRY_SUNFLORA, @@ -3065,7 +3085,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INSOMNIA, ABILITY_SUPER_LUCK, ABILITY_PRANKSTER }, + #else + .abilities = { ABILITY_INSOMNIA, ABILITY_NONE, ABILITY_PRANKSTER }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Murkrow"), .cryId = CRY_MURKROW, @@ -4183,7 +4207,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_RATTLED }, + #else + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RATTLED }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Granbull"), .cryId = CRY_GRANBULL, @@ -4450,7 +4478,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_STURDY, ABILITY_GLUTTONY, ABILITY_CONTRARY }, + #else + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_CONTRARY }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Shuckle"), .cryId = CRY_SHUCKLE, @@ -4913,7 +4945,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_PICKUP, ABILITY_QUICK_FEET, ABILITY_HONEY_GATHER }, + #else + .abilities = { ABILITY_PICKUP, ABILITY_NONE, ABILITY_HONEY_GATHER }, + #endif .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, .speciesName = _("Teddiursa"), @@ -4976,7 +5012,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_GUTS, ABILITY_QUICK_FEET, ABILITY_UNNERVE }, + #else + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_UNNERVE }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Ursaring"), .cryId = CRY_URSARING, @@ -5290,7 +5330,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_THICK_FAT }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Swinub"), .cryId = CRY_SWINUB, @@ -5353,7 +5397,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_THICK_FAT }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Piloswine"), .cryId = CRY_PILOSWINE, @@ -5692,7 +5740,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_WATER_2), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_HUSTLE, ABILITY_SNIPER, ABILITY_MOODY }, + #else + .abilities = { ABILITY_HUSTLE, ABILITY_NONE, ABILITY_MOODY }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Remoraid"), .cryId = CRY_REMORAID, @@ -5755,7 +5807,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_WATER_2), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SUCTION_CUPS, ABILITY_SNIPER, ABILITY_MOODY }, + #else + .abilities = { ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_MOODY }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Octillery"), .cryId = CRY_OCTILLERY, @@ -6398,7 +6454,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER }, + #else + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_SAP_SIPPER }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Stantler"), .cryId = CRY_STANTLER, @@ -6525,7 +6585,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OWN_TEMPO, ABILITY_TECHNICIAN, ABILITY_MOODY }, + #else + .abilities = { ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_MOODY }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Smeargle"), .cryId = CRY_SMEARGLE, @@ -6590,7 +6654,11 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_THICK_FAT, ABILITY_SCRAPPY, ABILITY_SAP_SIPPER }, + #else + .abilities = { ABILITY_THICK_FAT, ABILITY_NONE, ABILITY_SAP_SIPPER }, + #endif .bodyColor = BODY_COLOR_PINK, .speciesName = _("Miltank"), .cryId = CRY_MILTANK, diff --git a/src/data/pokemon/species_info/gen_3_families.h b/src/data/pokemon/species_info/gen_3_families.h index 2da10d371..8a23bb05f 100644 --- a/src/data/pokemon/species_info/gen_3_families.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -788,7 +788,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_RUN_AWAY, ABILITY_QUICK_FEET, ABILITY_RATTLED }, + #else + .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE, ABILITY_RATTLED }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Poochyena"), .cryId = CRY_POOCHYENA, @@ -850,7 +854,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_MOXIE }, + #else + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Mightyena"), .cryId = CRY_MIGHTYENA, @@ -922,7 +930,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, + #else + .abilities = { ABILITY_PICKUP, ABILITY_NONE, ABILITY_QUICK_FEET }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Zigzagoon"), .cryId = CRY_ZIGZAGOON, @@ -987,7 +999,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, + #else + .abilities = { ABILITY_PICKUP, ABILITY_NONE, ABILITY_QUICK_FEET }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Linoone"), .cryId = CRY_LINOONE, @@ -2127,7 +2143,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_KEEN_EYE, ABILITY_HYDRATION, ABILITY_RAIN_DISH }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RAIN_DISH }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Wingull"), .cryId = CRY_WINGULL, @@ -2197,7 +2217,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_KEEN_EYE, ABILITY_DRIZZLE, ABILITY_RAIN_DISH }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RAIN_DISH }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Pelipper"), .cryId = CRY_PELIPPER, @@ -2786,7 +2810,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_QUICK_FEET }, + #else + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_QUICK_FEET }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Shroomish"), .cryId = CRY_SHROOMISH, @@ -2850,7 +2878,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_TECHNICIAN }, + #else + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_TECHNICIAN }, + #endif .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Breloom"), .cryId = CRY_BRELOOM, @@ -3741,7 +3773,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_WONDER_SKIN }, + #endif .bodyColor = BODY_COLOR_PINK, .speciesName = _("Skitty"), .cryId = CRY_SKITTY, @@ -3810,7 +3846,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN }, + #else + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_WONDER_SKIN }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Delcatty"), .cryId = CRY_DELCATTY, @@ -3874,7 +3914,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_KEEN_EYE, ABILITY_STALL, ABILITY_PRANKSTER }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_PRANKSTER }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Sableye"), .cryId = CRY_SABLEYE, @@ -4757,7 +4801,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_PLUS, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + #else + .abilities = { ABILITY_PLUS, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Plusle"), .cryId = CRY_PLUSLE, @@ -4821,7 +4869,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_MINUS, ABILITY_NONE, ABILITY_VOLT_ABSORB }, + #else + .abilities = { ABILITY_MINUS, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Minun"), .cryId = CRY_MINUN, @@ -4959,7 +5011,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FLUCTUATING, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_TINTED_LENS, ABILITY_PRANKSTER }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_PRANKSTER }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Illumise"), .cryId = CRY_ILLUMISE, @@ -5682,7 +5738,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_SIMPLE, ABILITY_OWN_TEMPO }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_OWN_TEMPO }, + #endif .bodyColor = BODY_COLOR_YELLOW, .speciesName = _("Numel"), .cryId = CRY_NUMEL, @@ -5749,7 +5809,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_SOLID_ROCK, ABILITY_ANGER_POINT }, + #else + .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_NONE, ABILITY_ANGER_POINT }, + #endif .bodyColor = BODY_COLOR_RED, .speciesName = _("Camerupt"), .cryId = CRY_CAMERUPT, @@ -5876,7 +5940,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_WHITE_SMOKE, ABILITY_DROUGHT, ABILITY_SHELL_ARMOR }, + #else + .abilities = { ABILITY_WHITE_SMOKE, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Torkoal"), .cryId = CRY_TORKOAL, @@ -6064,7 +6132,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OWN_TEMPO, ABILITY_TANGLED_FEET, ABILITY_CONTRARY }, + #else + .abilities = { ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_CONTRARY }, + #endif .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, .speciesName = _("Spinda"), @@ -6921,7 +6993,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_HYDRATION }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Barboach"), .cryId = CRY_BARBOACH, @@ -6984,7 +7060,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION }, + #else + .abilities = { ABILITY_OBLIVIOUS, ABILITY_NONE, ABILITY_HYDRATION }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Whiscash"), .cryId = CRY_WHISCASH, @@ -7571,7 +7651,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_DRAGON), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_SWIFT_SWIM, ABILITY_OBLIVIOUS, ABILITY_ADAPTABILITY }, + #else + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_ADAPTABILITY }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Feebas"), .cryId = CRY_FEEBAS, @@ -7635,7 +7719,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_ERRATIC, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_DRAGON), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_MARVEL_SCALE, ABILITY_COMPETITIVE, ABILITY_CUTE_CHARM }, + #else + .abilities = { ABILITY_MARVEL_SCALE, ABILITY_NONE, ABILITY_CUTE_CHARM }, + #endif .bodyColor = BODY_COLOR_PINK, .speciesName = _("Milotic"), .cryId = CRY_MILOTIC, @@ -7968,7 +8056,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_COLOR_CHANGE, ABILITY_NONE, ABILITY_PROTEAN }, + #else + .abilities = { ABILITY_COLOR_CHANGE, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Kecleon"), .cryId = CRY_KECLEON, @@ -8033,7 +8125,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 35, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY }, + #else + .abilities = { ABILITY_INSOMNIA, ABILITY_NONE, ABILITY_CURSED_BODY }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Shuppet"), .cryId = CRY_SHUPPET, @@ -8097,7 +8193,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 35, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY }, + #else + .abilities = { ABILITY_INSOMNIA, ABILITY_NONE, ABILITY_CURSED_BODY }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Banette"), .cryId = CRY_BANETTE, @@ -8221,7 +8321,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 35, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_FRISK }, + #else + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Duskull"), .cryId = CRY_DUSKULL, @@ -8286,7 +8390,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 35, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Dusclops"), .cryId = CRY_DUSCLOPS, @@ -8358,7 +8466,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 35, .growthRate = GROWTH_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_AMORPHOUS), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_BLACK, .speciesName = _("Dusknoir"), .cryId = CRY_DUSKNOIR, @@ -8422,7 +8534,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MONSTER, EGG_GROUP_GRASS), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_HARVEST }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST }, + #endif .bodyColor = BODY_COLOR_GREEN, .speciesName = _("Tropius"), .cryId = CRY_TROPIUS, @@ -8622,7 +8738,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_PRESSURE, ABILITY_SUPER_LUCK, ABILITY_JUSTIFIED }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_JUSTIFIED }, + #endif .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, .speciesName = _("Absol"), @@ -8749,7 +8869,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY }, + #else + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_MOODY }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Snorunt"), .cryId = CRY_SNORUNT, @@ -8813,7 +8937,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FAIRY, EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY }, + #else + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_MOODY }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Glalie"), .cryId = CRY_GLALIE, @@ -8998,7 +9126,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS }, + #else + .abilities = { ABILITY_THICK_FAT, ABILITY_NONE, ABILITY_OBLIVIOUS }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Spheal"), .cryId = CRY_SPHEAL, @@ -9061,7 +9193,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS }, + #else + .abilities = { ABILITY_THICK_FAT, ABILITY_NONE, ABILITY_OBLIVIOUS }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Sealeo"), .cryId = CRY_SEALEO, @@ -9128,7 +9264,11 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_4 .abilities = { ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS }, + #else + .abilities = { ABILITY_THICK_FAT, ABILITY_NONE, ABILITY_OBLIVIOUS }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Walrein"), .cryId = CRY_WALREIN, diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index ed9569151..faa9ed73b 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -614,7 +614,11 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RECKLESS }, + #else + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_BROWN, .speciesName = _("Starly"), .cryId = CRY_STARLY, diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index be00b1ee6..db2392f68 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -1971,7 +1971,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE }, + #else + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_SAND_FORCE }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Roggenrola"), .cryId = CRY_ROGGENROLA, @@ -2036,7 +2040,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE }, + #else + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_SAND_FORCE }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Boldore"), .cryId = CRY_BOLDORE, @@ -2106,7 +2114,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_STURDY, ABILITY_SAND_STREAM, ABILITY_SAND_FORCE }, + #else + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_SAND_FORCE }, + #endif .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Gigalith"), .cryId = CRY_GIGALITH, @@ -6111,7 +6123,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG }, + #else + .abilities = { ABILITY_FRISK, ABILITY_NONE, ABILITY_SHADOW_TAG }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Gothita"), .cryId = CRY_GOTHITA, @@ -6173,7 +6189,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG }, + #else + .abilities = { ABILITY_FRISK, ABILITY_NONE, ABILITY_SHADOW_TAG }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Gothorita"), .cryId = CRY_GOTHORITA, @@ -6234,7 +6254,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_HUMAN_LIKE), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG }, + #else + .abilities = { ABILITY_FRISK, ABILITY_NONE, ABILITY_SHADOW_TAG }, + #endif .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Gothitelle"), .cryId = CRY_GOTHITELLE, @@ -6610,7 +6634,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR }, + #else + .abilities = { ABILITY_ICE_BODY, ABILITY_NONE, ABILITY_WEAK_ARMOR }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Vanillite"), .cryId = CRY_VANILLITE, @@ -6673,7 +6701,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR }, + #else + .abilities = { ABILITY_ICE_BODY, ABILITY_NONE, ABILITY_WEAK_ARMOR }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Vanillish"), .cryId = CRY_VANILLISH, @@ -6735,7 +6767,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_SLOW, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_ICE_BODY, ABILITY_SNOW_WARNING, ABILITY_WEAK_ARMOR }, + #else + .abilities = { ABILITY_ICE_BODY, ABILITY_NONE, ABILITY_WEAK_ARMOR }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Vanilluxe"), .cryId = CRY_VANILLUXE, @@ -8004,7 +8040,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS, EGG_GROUP_MINERAL), + #if P_UPDATED_ABILITIES >= GEN_6 .abilities = { ABILITY_IRON_BARBS, ABILITY_NONE, ABILITY_ANTICIPATION }, + #else + .abilities = { ABILITY_IRON_BARBS, ABILITY_NONE, ABILITY_NONE }, + #endif .bodyColor = BODY_COLOR_GRAY, .speciesName = _("Ferrothorn"), .cryId = CRY_FERROTHORN, @@ -8954,7 +8994,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_RATTLED }, + #else + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_RATTLED }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Cubchoo"), .cryId = CRY_CUBCHOO, @@ -9016,7 +9060,11 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), + #if P_UPDATED_ABILITIES >= GEN_7 .abilities = { ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_SWIFT_SWIM }, + #else + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SWIFT_SWIM }, + #endif .bodyColor = BODY_COLOR_WHITE, .speciesName = _("Beartic"), .cryId = CRY_BEARTIC, diff --git a/src/data/pokemon/species_info/gen_6_families.h b/src/data/pokemon/species_info/gen_6_families.h index 09ad2a01d..46c776639 100644 --- a/src/data/pokemon/species_info/gen_6_families.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -2156,6 +2156,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .teachableLearnset = sFurfrouTeachableLearnset, \ .eggMoveLearnset = sFurfrouEggMoveLearnset, \ .formSpeciesIdTable = sFurfrouFormSpeciesIdTable, \ + .formChangeTable = sFurfrouFormChangeTable, \ } [SPECIES_FURFROU_NATURAL] = FURFROU_MISC_INFO(Natural, FALSE, 48, 3, 56, 0, 0), diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 44cdfdc4e..353597e96 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -1063,7 +1063,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR }, .bodyColor = BODY_COLOR_PURPLE, - .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Corviknigh", "Corviknight"), + .speciesName = _("Corviknigh"), .cryId = CRY_CORVIKNIGHT, .natDexNum = NATIONAL_DEX_CORVIKNIGHT, .categoryName = _("Raven"), diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index 6eabb6b0e..15438680b 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -6763,17 +6763,17 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - //.frontPic = gMonFrontPic_TerapagosStellar, - //.frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPic = gMonFrontPic_TerapagosStellar, + .frontPicSize = MON_COORDS_SIZE(64, 64), .frontPicYOffset = 0, .frontAnimFrames = sAnims_TerapagosStellar, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backPic = gMonBackPic_TerapagosStellar, - //.backPicSize = MON_COORDS_SIZE(64, 64), + .backPic = gMonBackPic_TerapagosStellar, + .backPicSize = MON_COORDS_SIZE(64, 64), .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, - //.palette = gMonPalette_TerapagosStellar, - //.shinyPalette = gMonShinyPalette_TerapagosStellar, + .palette = gMonPalette_TerapagosStellar, + .shinyPalette = gMonShinyPalette_TerapagosStellar, .iconSprite = gMonIcon_TerapagosStellar, .iconPalIndex = 0, FOOTPRINT(TerapagosStellar) diff --git a/src/daycare.c b/src/daycare.c index b9e99cf5c..1b42b349e 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1209,7 +1209,6 @@ void RejectEggFromDayCare(void) RemoveEggFromDayCare(&gSaveBlock1Ptr->daycare); } -#if P_INCENSE_BREEDING < GEN_9 static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare) { u32 i; @@ -1226,7 +1225,6 @@ static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare } } } -#endif static const struct { u16 offspring; @@ -1331,9 +1329,8 @@ static void _GiveEggFromDaycare(struct DayCare *daycare) bool8 isEgg; species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots); -#if P_INCENSE_BREEDING < GEN_9 - AlterEggSpeciesWithIncenseItem(&species, daycare); -#endif + if (P_INCENSE_BREEDING < GEN_9) + AlterEggSpeciesWithIncenseItem(&species, daycare); SetInitialEggData(&egg, species, daycare); InheritIVs(&egg, daycare); InheritPokeball(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); @@ -1421,7 +1418,7 @@ static bool8 TryProduceOrHatchEgg(struct DayCare *daycare) } // Try to hatch Egg - if (++daycare->stepCounter == 255) + if (++daycare->stepCounter == ((P_EGG_CYCLE_LENGTH >= GEN_8) ? 127 : 255)) { u32 eggCycles; u8 toSub = GetEggCyclesToSubtract(); diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 4bb6c2747..59ba4d313 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -7,6 +7,7 @@ #include "help_system.h" #include "evolution_scene.h" #include "evolution_graphics.h" +#include "item.h" #include "link.h" #include "link_rfu.h" #include "m4a.h" @@ -547,12 +548,19 @@ static void CB2_TradeEvolutionSceneUpdate(void) static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) { u32 data = 0; + #if P_SHEDINJA_BALL >= GEN_4 + u16 ball = ITEM_POKE_BALL; + #endif const struct Evolution *evolutions = GetSpeciesEvolutions(preEvoSpecies); if (evolutions == NULL) { return; } - if (evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE) + if (evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE + #if P_SHEDINJA_BALL >= GEN_4 + && (CheckBagHasItem(ball, 1)) + #endif + ) { s32 i; struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount]; @@ -563,6 +571,10 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data); + #if P_SHEDINJA_BALL >= GEN_4 + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball); + RemoveBagItem(ball, 1); + #endif for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++) SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); diff --git a/src/item.c b/src/item.c index 192483f0a..9ef815693 100644 --- a/src/item.c +++ b/src/item.c @@ -184,6 +184,18 @@ bool8 HasAtLeastOneBerry(void) return FALSE; } +bool8 HasAtLeastOnePokeBall(void) +{ + u16 i; + + for (i = FIRST_BALL; i <= LAST_BALL; i++) + { + if (CheckBagHasItem(i, 1) == TRUE) + return TRUE; + } + return FALSE; +} + bool8 CheckBagHasSpace(u16 itemId, u16 count) { if (ItemId_GetPocket(itemId) == POCKET_NONE) diff --git a/src/party_menu.c b/src/party_menu.c index 41097cfac..3cc540d65 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -7427,6 +7427,7 @@ static void Task_TryItemUseFormChange(u8 taskId) case 0: targetSpecies = gTasks[taskId].tTargetSpecies; SetMonData(mon, MON_DATA_SPECIES, &targetSpecies); + TrySetDayLimitToFormChange(mon); CalculateMonStats(mon); gTasks[taskId].tState++; break; diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 5620a8aa7..abe7d2edb 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -3038,7 +3038,11 @@ void DexScreen_DrawMonFootprint(u8 windowId, u16 species, u8 x, u8 y) if (!(DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, TRUE))) return; +#if P_FOOTPRINTS footprint = (u8 *)(gSpeciesInfo[species].footprint); +#else + return; +#endif buffer = gDecompressionBuffer; tileIdx = 0; diff --git a/src/pokemon.c b/src/pokemon.c index b7dcaa440..664a692ec 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1264,6 +1264,10 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, { isShiny = TRUE; } + else if (P_NO_SHINIES_WITHOUT_POKEBALLS && !HasAtLeastOnePokeBall()) + { + isShiny = FALSE; + } else { u32 totalRerolls = 0; @@ -1592,7 +1596,7 @@ void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerP dest->spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); dest->abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM, NULL); dest->personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); - GetMonData(mon, MON_DATA_NICKNAME, dest->nickname); + GetMonData(mon, MON_DATA_NICKNAME10, dest->nickname); } static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon) @@ -2279,6 +2283,7 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) switch (field) { case MON_DATA_NICKNAME: + case MON_DATA_NICKNAME10: { if (boxMon->isBadEgg) { @@ -2308,8 +2313,6 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) } else { - // if (DECAP_ENABLED && !DECAP_NICKNAMES && IsStringAddrSafe(data, POKEMON_NAME_LENGTH)) - // *data++ = CHAR_FIXED_CASE; retVal = 0; while (retVal < min(sizeof(boxMon->nickname), POKEMON_NAME_LENGTH)) { @@ -2321,7 +2324,7 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) // so if both are 0 we assume that this is a vanilla // Pokémon and replace them with EOS. This means that // two CHAR_SPACE at the end of a nickname are trimmed. - if (POKEMON_NAME_LENGTH >= 12) + if (field != MON_DATA_NICKNAME10 && POKEMON_NAME_LENGTH >= 12) { if (substruct0->nickname11 == 0 && substruct0->nickname12 == 0) { @@ -2643,7 +2646,7 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_EVOLUTION_TRACKER: evoTracker.asField.a = substruct1->evolutionTracker1; evoTracker.asField.b = substruct1->evolutionTracker2; - evoTracker.asField.unused = 0; // fix for non-modern? + evoTracker.asField.unused = 0; retVal = evoTracker.value; break; default: @@ -2680,8 +2683,6 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) break; case MON_DATA_OT_NAME: { - // if (DECAP_ENABLED && !DECAP_NICKNAMES && IsStringAddrSafe(data, PLAYER_NAME_LENGTH)) - // *data++ = CHAR_FIXED_CASE; retVal = 0; while (retVal < PLAYER_NAME_LENGTH) @@ -2711,6 +2712,9 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) retVal = nature ^ boxMon->hiddenNatureModifier; break; } + case MON_DATA_DAYS_SINCE_FORM_CHANGE: + retVal = boxMon->daysSinceFormChange; + break; default: break; } @@ -2731,7 +2735,6 @@ u32 GetBoxMonData2(struct BoxPokemon *boxMon, s32 field) #define SET16(lhs) (lhs) = data[0] + (data[1] << 8) #define SET32(lhs) (lhs) = data[0] + (data[1] << 8) + (data[2] << 16) + (data[3] << 24) - void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg) { const u8 *data = dataArg; @@ -2820,14 +2823,23 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) switch (field) { case MON_DATA_NICKNAME: + case MON_DATA_NICKNAME10: { s32 i; for (i = 0; i < min(sizeof(boxMon->nickname), POKEMON_NAME_LENGTH); i++) boxMon->nickname[i] = data[i]; - if (POKEMON_NAME_LENGTH >= 11) - substruct0->nickname11 = data[10]; - if (POKEMON_NAME_LENGTH >= 12) - substruct0->nickname12 = data[11]; + if (field != MON_DATA_NICKNAME10) + { + if (POKEMON_NAME_LENGTH >= 11) + substruct0->nickname11 = data[10]; + if (POKEMON_NAME_LENGTH >= 12) + substruct0->nickname12 = data[11]; + } + else + { + substruct0->nickname11 = EOS; + substruct0->nickname12 = EOS; + } break; } case MON_DATA_SPECIES: @@ -3137,6 +3149,9 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) boxMon->hiddenNatureModifier = nature ^ hiddenNature; break; } + case MON_DATA_DAYS_SINCE_FORM_CHANGE: + SET8(boxMon->daysSinceFormChange); + break; } } @@ -4628,9 +4643,11 @@ u16 HoennNumToSpecies(u16 hoennNum) return NationalDexNumToSpecies(HoennToNationalDexNum(hoennNum)); } -u16 SpeciesToCryId(u16 species) +u16 GetCryIdBySpecies(u16 species) { species = SanitizeSpeciesId(species); + if (P_CRIES_ENABLED == FALSE || gSpeciesInfo[species].cryId >= CRY_COUNT) + return CRY_NONE; return gSpeciesInfo[species].cryId; } @@ -6140,20 +6157,24 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 case FORM_CHANGE_ITEM_USE: if (arg == formChanges[i].param1) { + bool32 pass = TRUE; switch (formChanges[i].param2) { case DAY: - if (GetTimeOfDay() != TIME_NIGHT) - targetSpecies = formChanges[i].targetSpecies; + if (GetTimeOfDay() == TIME_NIGHT) + pass = FALSE; break; case NIGHT: - if (GetTimeOfDay() == TIME_NIGHT) - targetSpecies = formChanges[i].targetSpecies; - break; - default: - targetSpecies = formChanges[i].targetSpecies; + if (GetTimeOfDay() != TIME_NIGHT) + pass = FALSE; break; } + + if (formChanges[i].param3 != STATUS1_NONE && GetBoxMonData(boxMon, MON_DATA_STATUS, NULL) & formChanges[i].param3) + pass = FALSE; + + if (pass) + targetSpecies = formChanges[i].targetSpecies; } break; case FORM_CHANGE_ITEM_USE_MULTICHOICE: @@ -6178,6 +6199,7 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 break; case FORM_CHANGE_WITHDRAW: case FORM_CHANGE_FAINT: + case FORM_CHANGE_DAYS_PASSED: targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_STATUS: @@ -6205,6 +6227,22 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 return targetSpecies; } +void TrySetDayLimitToFormChange(struct Pokemon *mon) +{ + u32 i; + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + const struct FormChange *formChanges = GetSpeciesFormChanges(species); + + for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) + { + if (formChanges[i].method == FORM_CHANGE_DAYS_PASSED && species != formChanges[i].targetSpecies) + { + SetMonData(mon, MON_DATA_DAYS_SINCE_FORM_CHANGE, &formChanges[i].param1); + break; + } + } +} + bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method) { u32 i; @@ -6435,3 +6473,38 @@ const u8 *GetMoveAnimationScript(u16 moveId) } return gMovesInfo[moveId].battleAnimScript; } + +void UpdateDaysPassedSinceFormChange(u16 days) +{ + u32 i; + for (i = 0; i < PARTY_SIZE; i++) + { + struct Pokemon *mon = &gPlayerParty[i]; + u8 daysSinceFormChange; + + if (!GetMonData(mon, MON_DATA_SPECIES, 0)) + continue; + + daysSinceFormChange = GetMonData(mon, MON_DATA_DAYS_SINCE_FORM_CHANGE, 0); + if (daysSinceFormChange == 0) + continue; + + if (daysSinceFormChange > days) + daysSinceFormChange -= days; + else + daysSinceFormChange = 0; + + SetMonData(mon, MON_DATA_DAYS_SINCE_FORM_CHANGE, &daysSinceFormChange); + + if (daysSinceFormChange == 0) + { + u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_DAYS_PASSED, 0); + + if (targetSpecies != SPECIES_NONE) + { + SetMonData(mon, MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(mon); + } + } + } +} diff --git a/src/sound.c b/src/sound.c index 30fa09b97..a5951e95e 100644 --- a/src/sound.c +++ b/src/sound.c @@ -2,8 +2,10 @@ #include "gba/m4a_internal.h" #include "gflib.h" #include "battle.h" -#include "quest_log.h" #include "m4a.h" +#include "pokemon.h" +#include "quest_log.h" +#include "constants/cries.h" #include "constants/songs.h" #include "constants/sound.h" #include "task.h" @@ -40,8 +42,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE3; extern struct ToneData gCryTable[]; extern struct ToneData gCryTable_Reverse[]; -extern u16 SpeciesToCryId(u16); - static void Task_Fanfare(u8 taskId); static void CreateFanfareTask(void); static void Task_DuckBGMForPokemonCry(u8 taskId); @@ -459,8 +459,8 @@ void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) // It creates 4 sets of 128 mini cry tables. // If you wish to expand pokemon, you need to // append new cases to the switch. - species = SpeciesToCryId(species); - if (species != 0) + species = GetCryIdBySpecies(species); + if (species != CRY_NONE) { species--; gMPlay_PokemonCry = SetPokemonCryTone(reverse ? &gCryTable_Reverse[species] : &gCryTable[species]);