diff --git a/graphics/pokemon/deoxys/anim_front_attack.png b/graphics/pokemon/deoxys/anim_front_attack.png new file mode 100644 index 000000000..f731109ae Binary files /dev/null and b/graphics/pokemon/deoxys/anim_front_attack.png differ diff --git a/graphics/pokemon/deoxys/anim_front_defense.png b/graphics/pokemon/deoxys/anim_front_defense.png new file mode 100644 index 000000000..ee4259be5 Binary files /dev/null and b/graphics/pokemon/deoxys/anim_front_defense.png differ diff --git a/graphics/pokemon/deoxys/anim_front_speed.png b/graphics/pokemon/deoxys/anim_front_speed.png new file mode 100644 index 000000000..c6f490d2f Binary files /dev/null and b/graphics/pokemon/deoxys/anim_front_speed.png differ diff --git a/graphics/pokemon/deoxys/back_attack.png b/graphics/pokemon/deoxys/back_attack.png new file mode 100644 index 000000000..14da9a37f Binary files /dev/null and b/graphics/pokemon/deoxys/back_attack.png differ diff --git a/graphics/pokemon/deoxys/back_defense.png b/graphics/pokemon/deoxys/back_defense.png new file mode 100644 index 000000000..3dbba1a7a Binary files /dev/null and b/graphics/pokemon/deoxys/back_defense.png differ diff --git a/graphics/pokemon/deoxys/back_speed.png b/graphics/pokemon/deoxys/back_speed.png new file mode 100644 index 000000000..80ccd4f99 Binary files /dev/null and b/graphics/pokemon/deoxys/back_speed.png differ diff --git a/graphics/pokemon/deoxys/front_attack.png b/graphics/pokemon/deoxys/front_attack.png new file mode 100644 index 000000000..c61f3adb9 Binary files /dev/null and b/graphics/pokemon/deoxys/front_attack.png differ diff --git a/graphics/pokemon/deoxys/front_defense.png b/graphics/pokemon/deoxys/front_defense.png new file mode 100644 index 000000000..7cd7365bc Binary files /dev/null and b/graphics/pokemon/deoxys/front_defense.png differ diff --git a/graphics/pokemon/deoxys/front_speed.png b/graphics/pokemon/deoxys/front_speed.png new file mode 100644 index 000000000..922acc0b2 Binary files /dev/null and b/graphics/pokemon/deoxys/front_speed.png differ diff --git a/graphics/pokemon/deoxys/icon_attack.png b/graphics/pokemon/deoxys/icon_attack.png new file mode 100644 index 000000000..ae34130ee Binary files /dev/null and b/graphics/pokemon/deoxys/icon_attack.png differ diff --git a/graphics/pokemon/deoxys/icon_defense.png b/graphics/pokemon/deoxys/icon_defense.png new file mode 100644 index 000000000..8c423d14b Binary files /dev/null and b/graphics/pokemon/deoxys/icon_defense.png differ diff --git a/graphics/pokemon/deoxys/icon_speed.png b/graphics/pokemon/deoxys/icon_speed.png new file mode 100644 index 000000000..674b93a9c Binary files /dev/null and b/graphics/pokemon/deoxys/icon_speed.png differ diff --git a/graphics/pokemon/deoxys/normal_attack.pal b/graphics/pokemon/deoxys/normal_attack.pal new file mode 100644 index 000000000..a478fcd11 --- /dev/null +++ b/graphics/pokemon/deoxys/normal_attack.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +64 40 32 +224 112 64 +160 80 56 +24 24 24 +128 192 192 +72 144 160 +152 112 144 +48 80 96 +96 64 112 +248 248 248 +192 192 208 +88 80 80 +120 120 112 +96 64 48 +168 88 56 diff --git a/graphics/pokemon/deoxys/normal_defense.pal b/graphics/pokemon/deoxys/normal_defense.pal new file mode 100644 index 000000000..b2b609f25 --- /dev/null +++ b/graphics/pokemon/deoxys/normal_defense.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +64 40 32 +160 80 56 +224 112 64 +96 64 48 +240 176 144 +128 192 192 +72 144 160 +48 80 96 +152 112 144 +24 24 24 +248 248 248 +192 192 208 +96 64 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/normal_speed.pal b/graphics/pokemon/deoxys/normal_speed.pal new file mode 100644 index 000000000..c3dcd2101 --- /dev/null +++ b/graphics/pokemon/deoxys/normal_speed.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +48 80 96 +72 144 160 +128 192 192 +64 40 32 +224 112 64 +24 24 24 +160 80 56 +192 192 208 +152 112 144 +248 248 248 +96 64 112 +88 80 80 +120 120 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/shiny_attack.pal b/graphics/pokemon/deoxys/shiny_attack.pal new file mode 100644 index 000000000..482fda5b7 --- /dev/null +++ b/graphics/pokemon/deoxys/shiny_attack.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +112 96 16 +248 232 64 +168 168 56 +24 24 24 +112 208 168 +72 160 112 +96 120 192 +56 96 88 +104 8 152 +248 248 248 +192 192 208 +80 80 80 +120 120 112 +96 64 48 +168 88 56 diff --git a/graphics/pokemon/deoxys/shiny_defense.pal b/graphics/pokemon/deoxys/shiny_defense.pal new file mode 100644 index 000000000..c1f34410a --- /dev/null +++ b/graphics/pokemon/deoxys/shiny_defense.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +112 96 16 +168 168 56 +248 232 64 +96 64 48 +248 248 216 +112 208 168 +72 160 112 +56 96 88 +96 120 192 +24 24 24 +248 248 248 +192 192 208 +104 8 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/shiny_speed.pal b/graphics/pokemon/deoxys/shiny_speed.pal new file mode 100644 index 000000000..cf9916ec9 --- /dev/null +++ b/graphics/pokemon/deoxys/shiny_speed.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +56 96 88 +72 160 112 +112 208 168 +112 96 16 +248 232 64 +24 24 24 +168 168 56 +192 192 208 +96 120 192 +248 248 248 +104 8 152 +80 80 80 +120 120 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magnemite/anim_front.png b/graphics/pokemon/magnemite/anim_front.png index e4355ee27..7d3dc54ec 100644 Binary files a/graphics/pokemon/magnemite/anim_front.png and b/graphics/pokemon/magnemite/anim_front.png differ diff --git a/graphics/pokemon/magnemite/back.png b/graphics/pokemon/magnemite/back.png index 2b96c2946..ec4214010 100644 Binary files a/graphics/pokemon/magnemite/back.png and b/graphics/pokemon/magnemite/back.png differ diff --git a/graphics/pokemon/magnemite/front.png b/graphics/pokemon/magnemite/front.png index 198a2d1b9..f39c25b7a 100644 Binary files a/graphics/pokemon/magnemite/front.png and b/graphics/pokemon/magnemite/front.png differ diff --git a/graphics/pokemon/magneton/back.png b/graphics/pokemon/magneton/back.png index a4638a1c1..7a45ee78d 100644 Binary files a/graphics/pokemon/magneton/back.png and b/graphics/pokemon/magneton/back.png differ diff --git a/graphics/pokemon/tsareena/back.png b/graphics/pokemon/tsareena/back.png index 01177ce41..ea66ff8a2 100644 Binary files a/graphics/pokemon/tsareena/back.png and b/graphics/pokemon/tsareena/back.png differ diff --git a/graphics/pokemon/tsareena/front.png b/graphics/pokemon/tsareena/front.png index 664c9c279..9072ce865 100644 Binary files a/graphics/pokemon/tsareena/front.png and b/graphics/pokemon/tsareena/front.png differ diff --git a/graphics/pokemon/tsareena/shiny.pal b/graphics/pokemon/tsareena/shiny.pal index 4c8171637..83672b511 100644 --- a/graphics/pokemon/tsareena/shiny.pal +++ b/graphics/pokemon/tsareena/shiny.pal @@ -5,7 +5,7 @@ JASC-PAL 136 8 64 112 56 144 232 96 128 -176 104 200 +152 0 208 200 0 112 96 16 48 216 160 232 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 7708dd2f8..e87f8f822 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -301,6 +301,7 @@ #define EVO_LEVEL_RAIN 28 // Pokémon reaches the specified level while it's raining #define EVO_SPECIFIC_MON_IN_PARTY 29 // Pokémon levels up with a specified Pokémon in party #define EVO_LEVEL_DARK_TYPE_MON_IN_PARTY 30 // Pokémon reaches the specified level with a Dark Type Pokémon in party +#define EVO_TRADE_SPECIFIC_MON 31 // Pokémon is traded for a specified Pokémon #define EVOS_PER_MON 8 diff --git a/include/constants/pokemon_config.h b/include/constants/pokemon_config.h new file mode 100644 index 000000000..f0fcc5fc0 --- /dev/null +++ b/include/constants/pokemon_config.h @@ -0,0 +1,19 @@ +#ifndef GUARD_CONSTANTS_POKEMON_CONFIG_H +#define GUARD_CONSTANTS_POKEMON_CONFIG_H + +// Used by other branches to communicate with each other. +#define POKEMON_EXPANSION + +#ifndef GEN_3 +#define GEN_3 0 +#define GEN_4 1 +#define GEN_5 2 +#define GEN_6 3 +#define GEN_7 4 +#define GEN_8 5 +#endif + +#define P_UPDATED_TYPES GEN_8 // In Gen6+, several Pokémon were changed to be partially or fully Fairy type. +#define P_UPDATED_STATS GEN_8 // Since Gen 6, Pokémon stats are updated with each passing generation. + +#endif // GUARD_CONSTANTS_POKEMON_CONFIG_H diff --git a/include/constants/species.h b/include/constants/species.h index 203fad678..89098e6b6 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -913,8 +913,11 @@ #define SPECIES_LYCANROC_DUSK 903 #define SPECIES_ZYGARDE_10 904 #define SPECIES_ZYGARDE_COMPLETE 905 +#define SPECIES_DEOXYS_ATTACK 906 +#define SPECIES_DEOXYS_DEFENSE 907 +#define SPECIES_DEOXYS_SPEED 908 -#define SPECIES_EGG 906 +#define SPECIES_EGG 909 #define NUM_SPECIES SPECIES_EGG // Unown forms, not actual species diff --git a/include/graphics.h b/include/graphics.h index 3ad49f884..a997c7efc 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3725,6 +3725,18 @@ extern const u32 gMonFrontPic_ZygardeComplete[]; extern const u32 gMonBackPic_ZygardeComplete[]; extern const u32 gMonPalette_ZygardeComplete[]; extern const u32 gMonShinyPalette_ZygardeComplete[]; +extern const u32 gMonFrontPic_DeoxysAttack[]; +extern const u32 gMonBackPic_DeoxysAttack[]; +extern const u32 gMonPalette_DeoxysAttack[]; +extern const u32 gMonShinyPalette_DeoxysAttack[]; +extern const u32 gMonFrontPic_DeoxysDefense[]; +extern const u32 gMonBackPic_DeoxysDefense[]; +extern const u32 gMonPalette_DeoxysDefense[]; +extern const u32 gMonShinyPalette_DeoxysDefense[]; +extern const u32 gMonFrontPic_DeoxysSpeed[]; +extern const u32 gMonBackPic_DeoxysSpeed[]; +extern const u32 gMonPalette_DeoxysSpeed[]; +extern const u32 gMonShinyPalette_DeoxysSpeed[]; extern const u8 gMonIcon_QuestionMark[]; extern const u8 gMonIcon_Bulbasaur[]; @@ -4662,6 +4674,9 @@ extern const u8 gMonIcon_LycanrocMidnight[]; extern const u8 gMonIcon_LycanrocDusk[]; extern const u8 gMonIcon_Zygarde10[]; extern const u8 gMonIcon_ZygardeComplete[]; +extern const u8 gMonIcon_DeoxysAttack[]; +extern const u8 gMonIcon_DeoxysDefense[]; +extern const u8 gMonIcon_DeoxysSpeed[]; extern const u8 gMonFootprint_QuestionMark[]; extern const u8 gMonFootprint_Bulbasaur[]; diff --git a/include/pokemon.h b/include/pokemon.h index a9ce1d149..c6e36e41c 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -4,6 +4,7 @@ #include "constants/pokemon.h" #include "sprite.h" #include "constants/region_map_sections.h" +#include "constants/pokemon_config.h" struct PokemonSubstruct0 { @@ -347,7 +348,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); u8 *UseStatIncreaseItem(u16 itemId); u8 GetNature(struct Pokemon *mon); u8 GetNatureFromPersonality(u32 personality); -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem, u16 tradePartnerSpecies); u16 HoennPokedexNumToSpecies(u16 hoennNum); u16 NationalPokedexNumToSpecies(u16 nationalNum); u16 NationalToHoennOrder(u16 nationalNum); diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index dabd9ce5b..b5fdd0737 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -910,6 +910,9 @@ gCryTable:: @ 869DCF4 cry_not Cry_Lycanroc_Dusk cry_not Cry_Zygarde_10 cry_not Cry_Zygarde_Complete + cry Cry_Deoxys_Attack + cry Cry_Deoxys_Defense + cry Cry_Deoxys_Speed .align 2 gCryTable2:: @ 869EF24 @@ -1822,3 +1825,6 @@ gCryTable2:: @ 869EF24 cry2_not Cry_Lycanroc_Dusk cry2_not Cry_Zygarde_10 cry2_not Cry_Zygarde_Complete + cry2 Cry_Deoxys_Attack + cry2 Cry_Deoxys_Defense + cry2 Cry_Deoxys_Speed diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index 63c7e65a1..302abd16d 100644 --- a/sound/direct_sound_data.inc +++ b/sound/direct_sound_data.inc @@ -4014,6 +4014,18 @@ Cry_Zygarde_10:: Cry_Zygarde_Complete:: .incbin "sound/direct_sound_samples/cries/cry_not_zygarde_complete.bin" + .align 2 +Cry_Deoxys_Attack:: + .incbin "sound/direct_sound_samples/cries/cry_deoxys.bin" + + .align 2 +Cry_Deoxys_Defense:: + .incbin "sound/direct_sound_samples/cries/cry_deoxys.bin" + + .align 2 +Cry_Deoxys_Speed:: + .incbin "sound/direct_sound_samples/cries/cry_deoxys.bin" + .align 2 DirectSoundWaveData_register_noise:: .incbin "sound/direct_sound_samples/register_noise.bin" diff --git a/src/battle_main.c b/src/battle_main.c index d6191918f..443893712 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5102,7 +5102,7 @@ static void TryEvolvePokemon(void) levelUpBits &= ~(gBitTable[i]); gLeveledUpInBattle = levelUpBits; - species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits); + species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits, SPECIES_NONE); if (species != SPECIES_NONE) { FreeAllWindowBuffers(); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index f189828b9..b17a8bce1 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -3688,6 +3688,18 @@ const u32 gMonFrontPic_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/ const u32 gMonBackPic_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/back_complete.4bpp.lz"); const u32 gMonPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/normal_complete.gbapal.lz"); const u32 gMonShinyPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/shiny_complete.gbapal.lz"); +const u32 gMonFrontPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front_attack.4bpp.lz"); +const u32 gMonBackPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/back_attack.4bpp.lz"); +const u32 gMonPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/normal_attack.gbapal.lz"); +const u32 gMonShinyPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/shiny_attack.gbapal.lz"); +const u32 gMonFrontPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front_defense.4bpp.lz"); +const u32 gMonBackPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/back_defense.4bpp.lz"); +const u32 gMonPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/normal_defense.gbapal.lz"); +const u32 gMonShinyPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/shiny_defense.gbapal.lz"); +const u32 gMonFrontPic_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front_speed.4bpp.lz"); +const u32 gMonBackPic_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/back_speed.4bpp.lz"); +const u32 gMonPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/normal_speed.gbapal.lz"); +const u32 gMonShinyPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/shiny_speed.gbapal.lz"); const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp"); const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/icon.4bpp"); @@ -4625,6 +4637,9 @@ const u8 gMonIcon_LycanrocMidnight[] = INCBIN_U8("graphics/pokemon/lycanroc/icon const u8 gMonIcon_LycanrocDusk[] = INCBIN_U8("graphics/pokemon/lycanroc/icon_dusk.4bpp"); const u8 gMonIcon_Zygarde10[] = INCBIN_U8("graphics/pokemon/zygarde/icon_10pc.4bpp"); const u8 gMonIcon_ZygardeComplete[] = INCBIN_U8("graphics/pokemon/zygarde/icon_complete.4bpp"); +const u8 gMonIcon_DeoxysAttack[] = INCBIN_U8("graphics/pokemon/deoxys/icon_attack.4bpp"); +const u8 gMonIcon_DeoxysDefense[] = INCBIN_U8("graphics/pokemon/deoxys/icon_defense.4bpp"); +const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/deoxys/icon_speed.4bpp"); const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/footprint.1bpp"); const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/footprint.1bpp"); diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 58979e611..c6f1e10eb 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -290,7 +290,11 @@ const struct BaseStats gBaseStats[] = .baseAttack = 45, .baseDefense = 50, .baseSpeed = 70, + #if P_UPDATED_STATS >= GEN_6 .baseSpAttack = 90, + #else + .baseSpAttack = 80, + #endif .baseSpDefense = 80, .type1 = TYPE_BUG, .type2 = TYPE_FLYING, @@ -363,7 +367,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_BEEDRILL] = { .baseHP = 65, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 90, + #else + .baseAttack = 80, + #endif .baseDefense = 40, .baseSpeed = 75, .baseSpAttack = 45, @@ -442,7 +450,11 @@ const struct BaseStats gBaseStats[] = .baseHP = 83, .baseAttack = 80, .baseDefense = 75, + #if P_UPDATED_STATS >= GEN_6 .baseSpeed = 101, + #else + .baseSpeed = 91, + #endif .baseSpAttack = 70, .baseSpDefense = 70, .type1 = TYPE_NORMAL, @@ -592,7 +604,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_ARBOK] = { .baseHP = 60, + #if P_UPDATED_STATS >= GEN_7 .baseAttack = 95, + #else + .baseAttack = 85, + #endif .baseDefense = 69, .baseSpeed = 80, .baseSpAttack = 65, @@ -618,10 +634,17 @@ const struct BaseStats gBaseStats[] = { .baseHP = 35, .baseAttack = 55, + #if P_UPDATED_STATS >= GEN_6 .baseDefense = 40, .baseSpeed = 90, .baseSpAttack = 50, .baseSpDefense = 50, + #else + .baseDefense = 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 40, + #endif .type1 = TYPE_ELECTRIC, .type2 = TYPE_ELECTRIC, .catchRate = 190, @@ -645,7 +668,11 @@ const struct BaseStats gBaseStats[] = .baseHP = 60, .baseAttack = 90, .baseDefense = 55, + #if P_UPDATED_STATS >= GEN_6 .baseSpeed = 110, + #else + .baseSpeed = 100, + #endif .baseSpAttack = 90, .baseSpDefense = 80, .type1 = TYPE_ELECTRIC, @@ -770,7 +797,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_NIDOQUEEN] = { .baseHP = 90, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 92, + #else + .baseAttack = 82, + #endif .baseDefense = 87, .baseSpeed = 76, .baseSpAttack = 75, @@ -845,7 +876,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_NIDOKING] = { .baseHP = 81, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 102, + #else + .baseAttack = 92, + #endif .baseDefense = 77, .baseSpeed = 85, .baseSpAttack = 85, @@ -875,8 +910,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 35, .baseSpAttack = 60, .baseSpDefense = 65, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 150, .expYield = 113, .evYield_HP = 2, @@ -899,10 +939,19 @@ const struct BaseStats gBaseStats[] = .baseAttack = 70, .baseDefense = 73, .baseSpeed = 60, + #if P_UPDATED_STATS >= GEN_6 .baseSpAttack = 95, + #else + .baseSpAttack = 85, + #endif .baseSpDefense = 90, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 25, .expYield = 217, .evYield_HP = 3, @@ -980,8 +1029,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 20, .baseSpAttack = 45, .baseSpDefense = 25, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_NORMAL, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 170, .expYield = 95, .evYield_HP = 2, @@ -1004,10 +1058,19 @@ const struct BaseStats gBaseStats[] = .baseAttack = 70, .baseDefense = 45, .baseSpeed = 45, + #if P_UPDATED_STATS >= GEN_6 .baseSpAttack = 85, + #else + .baseSpAttack = 75, + #endif .baseSpDefense = 50, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_NORMAL, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 50, .expYield = 196, .evYield_HP = 3, @@ -1132,7 +1195,11 @@ const struct BaseStats gBaseStats[] = .baseAttack = 80, .baseDefense = 85, .baseSpeed = 50, + #if P_UPDATED_STATS >= GEN_6 .baseSpAttack = 110, + #else + .baseSpAttack = 100, + #endif .baseSpDefense = 90, .type1 = TYPE_GRASS, .type2 = TYPE_POISON, @@ -1288,7 +1355,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_DUGTRIO] = { .baseHP = 35, + #if P_UPDATED_STATS >= GEN_7 .baseAttack = 100, + #else + .baseAttack = 80, + #endif .baseDefense = 50, .baseSpeed = 120, .baseSpAttack = 50, @@ -1567,7 +1638,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_POLIWRATH] = { .baseHP = 90, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 95, + #else + .baseAttack = 85, + #endif .baseDefense = 95, .baseSpeed = 70, .baseSpAttack = 70, @@ -1649,7 +1724,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 45, .baseSpeed = 120, .baseSpAttack = 135, + #if P_UPDATED_STATS >= GEN_6 .baseSpDefense = 95, + #else + .baseSpDefense = 85, + #endif .type1 = TYPE_PSYCHIC, .type2 = TYPE_PSYCHIC, .catchRate = 50, @@ -1803,7 +1882,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 65, .baseSpeed = 70, .baseSpAttack = 100, + #if P_UPDATED_STATS >= GEN_6 .baseSpDefense = 70, + #else + .baseSpDefense = 60, + #endif .type1 = TYPE_GRASS, .type2 = TYPE_POISON, .catchRate = 45, @@ -1928,7 +2011,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_GOLEM] = { .baseHP = 80, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 120, + #else + .baseAttack = 110, + #endif .baseDefense = 130, .baseSpeed = 45, .baseSpAttack = 55, @@ -2108,7 +2195,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_FARFETCHD] = { .baseHP = 52, + #if P_UPDATED_STATS >= GEN_7 .baseAttack = 90, + #else + .baseAttack = 65, + #endif .baseDefense = 55, .baseSpeed = 60, .baseSpAttack = 58, @@ -2162,7 +2253,11 @@ const struct BaseStats gBaseStats[] = .baseHP = 60, .baseAttack = 110, .baseDefense = 70, + #if P_UPDATED_STATS >= GEN_7 .baseSpeed = 110, + #else + .baseSpeed = 100, + #endif .baseSpAttack = 60, .baseSpDefense = 60, .type1 = TYPE_NORMAL, @@ -2567,7 +2662,11 @@ const struct BaseStats gBaseStats[] = .baseHP = 60, .baseAttack = 50, .baseDefense = 70, + #if P_UPDATED_STATS >= GEN_7 .baseSpeed = 150, + #else + .baseSpeed = 140, + #endif .baseSpAttack = 80, .baseSpDefense = 80, .type1 = TYPE_ELECTRIC, @@ -2620,7 +2719,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 85, .baseSpeed = 55, .baseSpAttack = 125, + #if P_UPDATED_STATS >= GEN_7 .baseSpDefense = 75, + #else + .baseSpDefense = 65, + #endif .type1 = TYPE_GRASS, .type2 = TYPE_PSYCHIC, .catchRate = 45, @@ -3109,8 +3212,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 90, .baseSpAttack = 100, .baseSpDefense = 120, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + #endif .catchRate = 45, .expYield = 161, .evYield_SpDefense = 2, @@ -4175,7 +4283,11 @@ const struct BaseStats gBaseStats[] = .baseAttack = 50, .baseDefense = 50, .baseSpeed = 70, + #if P_UPDATED_STATS >= GEN_7 .baseSpAttack = 86, + #else + .baseSpAttack = 76, + #endif .baseSpDefense = 96, .type1 = TYPE_NORMAL, .type2 = TYPE_FLYING, @@ -4276,7 +4388,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 70, .baseSpeed = 40, .baseSpAttack = 60, + #if P_UPDATED_STATS >= GEN_7 .baseSpDefense = 70, + #else + .baseSpDefense = 60, + #endif .type1 = TYPE_BUG, .type2 = TYPE_POISON, .catchRate = 90, @@ -4404,8 +4520,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 15, .baseSpAttack = 45, .baseSpDefense = 55, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 150, .expYield = 44, .evYield_SpDefense = 1, @@ -4430,8 +4551,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 15, .baseSpAttack = 40, .baseSpDefense = 20, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_NORMAL, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 170, .expYield = 42, .evYield_HP = 1, @@ -4455,8 +4581,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 20, .baseSpAttack = 40, .baseSpDefense = 65, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 190, .expYield = 49, .evYield_SpDefense = 1, @@ -4480,8 +4611,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 40, .baseSpAttack = 80, .baseSpDefense = 105, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FLYING, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + #endif .catchRate = 75, .expYield = 142, .evYield_SpDefense = 2, @@ -4602,7 +4738,11 @@ const struct BaseStats gBaseStats[] = { .baseHP = 90, .baseAttack = 75, + #if P_UPDATED_STATS >= GEN_6 .baseDefense = 85, + #else + .baseDefense = 75, + #endif .baseSpeed = 55, .baseSpAttack = 115, .baseSpDefense = 90, @@ -4627,7 +4767,11 @@ const struct BaseStats gBaseStats[] = { .baseHP = 75, .baseAttack = 80, + #if P_UPDATED_STATS >= GEN_6 .baseDefense = 95, + #else + .baseDefense = 85, + #endif .baseSpeed = 50, .baseSpAttack = 90, .baseSpDefense = 100, @@ -4657,8 +4801,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 40, .baseSpAttack = 20, .baseSpDefense = 50, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_WATER, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + #endif .catchRate = 190, .expYield = 88, .evYield_HP = 2, @@ -4680,10 +4829,19 @@ const struct BaseStats gBaseStats[] = .baseAttack = 50, .baseDefense = 80, .baseSpeed = 50, + #if P_UPDATED_STATS >= GEN_6 .baseSpAttack = 60, + #else + .baseSpAttack = 50, + #endif .baseSpDefense = 80, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_WATER, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + #endif .catchRate = 75, .expYield = 189, .evYield_HP = 3, @@ -4807,7 +4965,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 70, .baseSpeed = 110, .baseSpAttack = 55, + #if P_UPDATED_STATS >= GEN_6 .baseSpDefense = 95, + #else + .baseSpDefense = 85, + #endif .type1 = TYPE_GRASS, .type2 = TYPE_FLYING, .catchRate = 45, @@ -5310,8 +5472,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 30, .baseSpAttack = 40, .baseSpDefense = 40, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 190, .expYield = 60, .evYield_Attack = 1, @@ -5335,8 +5502,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 45, .baseSpAttack = 60, .baseSpDefense = 60, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 75, .expYield = 158, .evYield_Attack = 2, @@ -5356,7 +5528,11 @@ const struct BaseStats gBaseStats[] = { .baseHP = 65, .baseAttack = 95, + #if P_UPDATED_STATS >= GEN_7 .baseDefense = 85, + #else + .baseDefense = 75, + #endif .baseSpeed = 85, .baseSpAttack = 55, .baseSpDefense = 55, @@ -5559,11 +5735,19 @@ const struct BaseStats gBaseStats[] = [SPECIES_MAGCARGO] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 60, .baseAttack = 50, .baseDefense = 120, .baseSpeed = 30, .baseSpAttack = 90, + #else + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 120, + .baseSpeed = 30, + .baseSpAttack = 80, + #endif .baseSpDefense = 80, .type1 = TYPE_FIRE, .type2 = TYPE_ROCK, @@ -5635,12 +5819,21 @@ const struct BaseStats gBaseStats[] = [SPECIES_CORSOLA] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 65, .baseAttack = 55, .baseDefense = 95, .baseSpeed = 35, .baseSpAttack = 65, .baseSpDefense = 95, + #else + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 85, + #endif .type1 = TYPE_WATER, .type2 = TYPE_ROCK, .catchRate = 60, @@ -5738,7 +5931,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_MANTINE] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 85, + #else + .baseHP = 65, + #endif .baseAttack = 40, .baseDefense = 70, .baseSpeed = 70, @@ -6788,7 +6985,11 @@ const struct BaseStats gBaseStats[] = .baseAttack = 70, .baseDefense = 50, .baseSpeed = 65, + #if P_UPDATED_STATS >= GEN_6 .baseSpAttack = 100, + #else + .baseSpAttack = 90, + #endif .baseSpDefense = 50, .type1 = TYPE_BUG, .type2 = TYPE_FLYING, @@ -7045,7 +7246,11 @@ const struct BaseStats gBaseStats[] = .baseAttack = 85, .baseDefense = 60, .baseSpeed = 125, + #if P_UPDATED_STATS >= GEN_7 .baseSpAttack = 75, + #else + .baseSpAttack = 50, + #endif .baseSpDefense = 50, .type1 = TYPE_NORMAL, .type2 = TYPE_FLYING, @@ -7096,7 +7301,11 @@ const struct BaseStats gBaseStats[] = .baseAttack = 50, .baseDefense = 100, .baseSpeed = 65, + #if P_UPDATED_STATS >= GEN_7 .baseSpAttack = 95, + #else + .baseSpAttack = 85, + #endif .baseSpDefense = 70, .type1 = TYPE_WATER, .type2 = TYPE_FLYING, @@ -7124,8 +7333,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 40, .baseSpAttack = 45, .baseSpDefense = 35, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + #endif .catchRate = 235, .expYield = 40, .evYield_SpAttack = 1, @@ -7149,8 +7363,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 50, .baseSpAttack = 65, .baseSpDefense = 55, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + #endif .catchRate = 120, .expYield = 97, .evYield_SpAttack = 2, @@ -7174,8 +7393,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 80, .baseSpAttack = 125, .baseSpDefense = 115, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + #endif .catchRate = 45, .expYield = 233, .evYield_SpAttack = 3, @@ -7222,8 +7446,13 @@ const struct BaseStats gBaseStats[] = .baseHP = 70, .baseAttack = 60, .baseDefense = 62, + #if P_UPDATED_STATS >= GEN_7 .baseSpeed = 80, .baseSpAttack = 100, + #else + .baseSpeed = 60, + .baseSpAttack = 80, + #endif .baseSpDefense = 82, .type1 = TYPE_BUG, .type2 = TYPE_FLYING, @@ -7502,7 +7731,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 63, .baseSpeed = 68, .baseSpAttack = 91, + #if P_UPDATED_STATS >= GEN_6 .baseSpDefense = 73, + #else + .baseSpDefense = 63, + #endif .type1 = TYPE_NORMAL, .type2 = TYPE_NORMAL, .catchRate = 45, @@ -7580,8 +7813,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 20, .baseSpAttack = 20, .baseSpDefense = 40, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_NORMAL, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + #endif .catchRate = 150, .expYield = 38, .evYield_HP = 1, @@ -7653,7 +7891,11 @@ const struct BaseStats gBaseStats[] = .baseHP = 70, .baseAttack = 65, .baseDefense = 65, + #if P_UPDATED_STATS >= GEN_7 .baseSpeed = 90, + #else + .baseSpeed = 70, + #endif .baseSpAttack = 55, .baseSpDefense = 55, .type1 = TYPE_NORMAL, @@ -7709,8 +7951,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 50, .baseSpAttack = 55, .baseSpDefense = 55, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_STEEL, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_STEEL, + .type2 = TYPE_STEEL, + #endif .catchRate = 45, .expYield = 133, .evYield_Attack = 1, @@ -7962,10 +8209,17 @@ const struct BaseStats gBaseStats[] = { .baseHP = 65, .baseAttack = 73, + #if P_UPDATED_STATS >= GEN_7 .baseDefense = 75, .baseSpeed = 85, .baseSpAttack = 47, .baseSpDefense = 85, + #else + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 47, + .baseSpDefense = 75, + #endif .type1 = TYPE_BUG, .type2 = TYPE_BUG, .catchRate = 150, @@ -7988,10 +8242,17 @@ const struct BaseStats gBaseStats[] = { .baseHP = 65, .baseAttack = 47, + #if P_UPDATED_STATS >= GEN_7 .baseDefense = 75, .baseSpeed = 85, .baseSpAttack = 73, .baseSpDefense = 85, + #else + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 73, + .baseSpDefense = 75, + #endif .type1 = TYPE_BUG, .type2 = TYPE_BUG, .catchRate = 150, @@ -8578,7 +8839,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_LUNATONE] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 90, + #else + .baseHP = 70, + #endif .baseAttack = 55, .baseDefense = 65, .baseSpeed = 70, @@ -8604,7 +8869,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_SOLROCK] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 90, + #else + .baseHP = 70, + #endif .baseAttack = 95, .baseDefense = 85, .baseSpeed = 70, @@ -9113,12 +9382,21 @@ const struct BaseStats gBaseStats[] = [SPECIES_CHIMECHO] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 75, .baseAttack = 50, .baseDefense = 80, .baseSpeed = 65, .baseSpAttack = 95, .baseSpDefense = 90, + #else + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 80, + #endif .type1 = TYPE_PSYCHIC, .type2 = TYPE_PSYCHIC, .catchRate = 45, @@ -10138,7 +10416,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 70, .baseSpeed = 100, .baseSpAttack = 50, + #if P_UPDATED_STATS >= GEN_6 .baseSpDefense = 60, + #else + .baseSpDefense = 50, + #endif .type1 = TYPE_NORMAL, .type2 = TYPE_FLYING, .catchRate = 45, @@ -10363,7 +10645,11 @@ const struct BaseStats gBaseStats[] = { .baseHP = 60, .baseAttack = 70, + #if P_UPDATED_STATS >= GEN_6 .baseDefense = 65, + #else + .baseDefense = 55, + #endif .baseSpeed = 90, .baseSpAttack = 125, .baseSpDefense = 105, @@ -11278,8 +11564,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 60, .baseSpAttack = 70, .baseSpDefense = 90, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_PSYCHIC, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + #endif .catchRate = 145, .expYield = 62, .evYield_SpDefense = 1, @@ -12021,8 +12312,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 80, .baseSpAttack = 120, .baseSpDefense = 115, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_FAIRY, .type2 = TYPE_FLYING, + #else + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + #endif .catchRate = 30, .expYield = 245, .evYield_SpAttack = 2, @@ -13143,7 +13439,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_STOUTLAND] = { .baseHP = 85, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 110, + #else + .baseAttack = 100, + #endif .baseDefense = 90, .baseSpeed = 80, .baseSpAttack = 45, @@ -13468,7 +13768,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_UNFEZANT] = { .baseHP = 80, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 115, + #else + .baseAttack = 105, + #endif .baseDefense = 80, .baseSpeed = 93, .baseSpAttack = 65, @@ -13602,7 +13906,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 130, .baseSpeed = 25, .baseSpAttack = 60, + #if P_UPDATED_STATS >= GEN_6 .baseSpDefense = 80, + #else + .baseSpDefense = 70, + #endif .type1 = TYPE_ROCK, .type2 = TYPE_ROCK, .catchRate = 45, @@ -13624,7 +13932,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_WOOBAT] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 65, + #else + .baseHP = 55, + #endif .baseAttack = 45, .baseDefense = 43, .baseSpeed = 72, @@ -13877,7 +14189,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_SEISMITOAD] = { .baseHP = 105, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 95, + #else + .baseAttack = 85, + #endif .baseDefense = 75, .baseSpeed = 74, .baseSpAttack = 85, @@ -14010,7 +14326,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 80, .baseSpeed = 92, .baseSpAttack = 70, + #if P_UPDATED_STATS >= GEN_6 .baseSpDefense = 80, + #else + .baseSpDefense = 70, + #endif .type1 = TYPE_BUG, .type2 = TYPE_GRASS, .catchRate = 45, @@ -14084,7 +14404,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_SCOLIPEDE] = { .baseHP = 60, + #if P_UPDATED_STATS >= GEN_6 .baseAttack = 100, + #else + .baseAttack = 90, + #endif .baseDefense = 89, .baseSpeed = 112, .baseSpAttack = 55, @@ -14115,8 +14439,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 66, .baseSpAttack = 37, .baseSpDefense = 50, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_GRASS, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + #endif .catchRate = 190, .expYield = 56, .evYield_Speed = 1, @@ -14141,8 +14470,13 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 116, .baseSpAttack = 77, .baseSpDefense = 75, + #if P_UPDATED_TYPES >= GEN_6 .type1 = TYPE_GRASS, .type2 = TYPE_FAIRY, + #else + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + #endif .catchRate = 75, .expYield = 168, .evYield_Speed = 2, @@ -14293,7 +14627,11 @@ const struct BaseStats gBaseStats[] = { .baseHP = 95, .baseAttack = 117, + #if P_UPDATED_STATS >= GEN_6 .baseDefense = 80, + #else + .baseDefense = 70, + #endif .baseSpeed = 92, .baseSpAttack = 65, .baseSpDefense = 70, @@ -14420,7 +14758,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_CRUSTLE] = { .baseHP = 70, + #if P_UPDATED_STATS >= GEN_7 .baseAttack = 105, + #else + .baseAttack = 95, + #endif .baseDefense = 125, .baseSpeed = 45, .baseSpAttack = 65, @@ -15828,7 +16170,11 @@ const struct BaseStats gBaseStats[] = [SPECIES_BEARTIC] = { .baseHP = 95, + #if P_UPDATED_STATS >= GEN_7 .baseAttack = 130, + #else + .baseAttack = 110, + #endif .baseDefense = 80, .baseSpeed = 50, .baseSpAttack = 70, @@ -15852,9 +16198,15 @@ const struct BaseStats gBaseStats[] = [SPECIES_CRYOGONAL] = { + #if P_UPDATED_STATS >= GEN_7 .baseHP = 80, .baseAttack = 50, .baseDefense = 50, + #else + .baseHP = 70, + .baseAttack = 50, + .baseDefense = 30, + #endif .baseSpeed = 105, .baseSpAttack = 95, .baseSpDefense = 135, @@ -17580,10 +17932,17 @@ const struct BaseStats gBaseStats[] = { .baseHP = 60, .baseAttack = 50, + #if P_UPDATED_STATS >= GEN_8 + .baseDefense = 140, + .baseSpeed = 60, + .baseSpAttack = 50, + .baseSpDefense = 140, + #else .baseDefense = 150, .baseSpeed = 60, .baseSpAttack = 50, .baseSpDefense = 150, + #endif .type1 = TYPE_STEEL, .type2 = TYPE_GHOST, .catchRate = 45, @@ -21376,7 +21735,11 @@ const struct BaseStats gBaseStats[] = .baseDefense = 65, .baseSpeed = 150, .baseSpAttack = 175, + #if P_UPDATED_STATS >= GEN_7 .baseSpDefense = 105, + #else + .baseSpDefense = 95, + #endif .type1 = TYPE_PSYCHIC, .type2 = TYPE_PSYCHIC, .catchRate = 50, @@ -22671,10 +23034,17 @@ const struct BaseStats gBaseStats[] = [SPECIES_AEGISLASH_BLADE] = { .baseHP = 60, + #if P_UPDATED_STATS >= GEN_8 + .baseAttack = 140, + .baseDefense = 50, + .baseSpeed = 60, + .baseSpAttack = 140, + #else .baseAttack = 150, .baseDefense = 50, .baseSpeed = 60, .baseSpAttack = 150, + #endif .baseSpDefense = 50, .type1 = TYPE_STEEL, .type2 = TYPE_GHOST, @@ -22891,4 +23261,78 @@ const struct BaseStats gBaseStats[] = .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, }, + + [SPECIES_DEOXYS_ATTACK] = + { + .baseHP = 50, + .baseAttack = 180, + .baseDefense = 20, + .baseSpeed = 150, + .baseSpAttack = 180, + .baseSpDefense = 20, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 270, + .evYield_Attack = 2, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_DEOXYS_DEFENSE] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 160, + .baseSpeed = 90, + .baseSpAttack = 70, + .baseSpDefense = 160, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 270, + .evYield_Defense = 2, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_DEOXYS_SPEED] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 90, + .baseSpeed = 180, + .baseSpAttack = 95, + .baseSpDefense = 90, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 270, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, }; diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index ef052dd3f..06a2bb571 100644 --- a/src/data/pokemon/evolution.h +++ b/src/data/pokemon/evolution.h @@ -354,7 +354,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_VANILLITE] = {{EVO_LEVEL, 35, SPECIES_VANILLISH}}, [SPECIES_VANILLISH] = {{EVO_LEVEL, 47, SPECIES_VANILLUXE}}, [SPECIES_DEERLING] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK}}, - [SPECIES_KARRABLAST] = {{EVO_LEVEL, SPECIES_SHELMET, SPECIES_ESCAVALIER}}, + [SPECIES_KARRABLAST] = {{EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}}, [SPECIES_FOONGUS] = {{EVO_LEVEL, 39, SPECIES_AMOONGUSS}}, [SPECIES_FRILLISH] = {{EVO_LEVEL, 40, SPECIES_JELLICENT}}, [SPECIES_JOLTIK] = {{EVO_LEVEL, 36, SPECIES_GALVANTULA}}, @@ -369,7 +369,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_AXEW] = {{EVO_LEVEL, 38, SPECIES_FRAXURE}}, [SPECIES_FRAXURE] = {{EVO_LEVEL, 48, SPECIES_HAXORUS}}, [SPECIES_CUBCHOO] = {{EVO_LEVEL, 37, SPECIES_BEARTIC}}, - [SPECIES_SHELMET] = {{EVO_LEVEL, SPECIES_KARRABLAST, SPECIES_ACCELGOR}}, + [SPECIES_SHELMET] = {{EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}}, [SPECIES_MIENFOO] = {{EVO_LEVEL, 50, SPECIES_MIENSHAO}}, [SPECIES_GOLETT] = {{EVO_LEVEL, 43, SPECIES_GOLURK}}, [SPECIES_PAWNIARD] = {{EVO_LEVEL, 52, SPECIES_BISHARP}}, diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 6b97b8281..e371d7422 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -909,4 +909,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_LYCANROC_DUSK] = sLycanrocDuskLevelUpLearnset, [SPECIES_ZYGARDE_10] = sZygardeLevelUpLearnset, [SPECIES_ZYGARDE_COMPLETE] = sZygardeLevelUpLearnset, + [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackLevelUpLearnset, + [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseLevelUpLearnset, + [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedLevelUpLearnset, }; diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index 3f5491c62..5bc79d3bf 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -16940,3 +16940,59 @@ static const struct LevelUpMove sLycanrocDuskLevelUpLearnset[] = { //LEVEL_UP_MOVE(48, MOVE_STONE_EDGE), LEVEL_UP_END }; + +static const struct LevelUpMove sDeoxysAttackLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_TELEPORT), + LEVEL_UP_MOVE(19, MOVE_TAUNT), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SUPERPOWER), + //LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + //LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(61, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDeoxysDefenseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_TELEPORT), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_SPIKES), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SNATCH), + //LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + //LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(55, MOVE_AMNESIA), + LEVEL_UP_MOVE(61, MOVE_RECOVER), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_COUNTER), + LEVEL_UP_MOVE(73, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDeoxysSpeedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SWIFT), + //LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + //LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_AGILITY), + LEVEL_UP_MOVE(61, MOVE_RECOVER), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_EXTREME_SPEED), + LEVEL_UP_END +}; diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index a65da06af..681322f6c 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -4624,4 +4624,19 @@ const struct MonCoords gMonBackPicCoords[] = .size = 0x88, .y_offset = 4, }, + [SPECIES_DEOXYS_ATTACK] = + { + .size = 0x87, + .y_offset = 6, + }, + [SPECIES_DEOXYS_DEFENSE] = + { + .size = 0x87, + .y_offset = 9, + }, + [SPECIES_DEOXYS_SPEED] = + { + .size = 0x87, + .y_offset = 6, + }, }; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 1cbcffb9f..14c8a29f8 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -910,6 +910,9 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(LYCANROC_DUSK, gMonBackPic_LycanrocDusk), SPECIES_SPRITE(ZYGARDE_10, gMonBackPic_Zygarde10), SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonBackPic_ZygardeComplete), + SPECIES_SPRITE(DEOXYS_ATTACK, gMonBackPic_DeoxysAttack), + SPECIES_SPRITE(DEOXYS_DEFENSE, gMonBackPic_DeoxysDefense), + SPECIES_SPRITE(DEOXYS_SPEED, gMonBackPic_DeoxysSpeed), SPECIES_SPRITE(UNOWN_A, gMonBackPic_UnownA), SPECIES_SPRITE(UNOWN_B, gMonBackPic_UnownB), diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 640fb9bf8..51edda277 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -8416,6 +8416,62 @@ static const union AnimCmd sAnim_ZYGARDE_COMPLETE_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_DEOXYS_ATTACK_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), +}; + +static const union AnimCmd sAnim_DEOXYS_ATTACK_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DEOXYS_DEFENSE_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DEOXYS_DEFENSE_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DEOXYS_SPEED_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DEOXYS_SPEED_2[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(2, 20), + ANIMCMD_END, +}; + static const union AnimCmd *const sAnims_NONE[] ={ sAnim_GeneralFrame0, sAnim_NONE_1, @@ -13126,6 +13182,24 @@ static const union AnimCmd *const sAnims_ZYGARDE_COMPLETE[] ={ sAnim_ZYGARDE_COMPLETE_1, }; +static const union AnimCmd *const sAnims_DEOXYS_ATTACK[] ={ + sAnim_GeneralFrame0, + sAnim_DEOXYS_ATTACK_1, + sAnim_DEOXYS_ATTACK_2, +}; + +static const union AnimCmd *const sAnims_DEOXYS_DEFENSE[] ={ + sAnim_GeneralFrame0, + sAnim_DEOXYS_DEFENSE_1, + sAnim_DEOXYS_DEFENSE_2, +}; + +static const union AnimCmd *const sAnims_DEOXYS_SPEED[] ={ + sAnim_GeneralFrame0, + sAnim_DEOXYS_SPEED_1, + sAnim_DEOXYS_SPEED_2, +}; + #define ANIM_CMD(name) [SPECIES_##name] = sAnims_##name #define ANIM_CMD_FULL(name, anims) [SPECIES_##name] = anims @@ -14038,6 +14112,9 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = ANIM_CMD(LYCANROC_DUSK), ANIM_CMD(ZYGARDE_10), ANIM_CMD(ZYGARDE_COMPLETE), + ANIM_CMD(DEOXYS_ATTACK), + ANIM_CMD(DEOXYS_DEFENSE), + ANIM_CMD(DEOXYS_SPEED), }; #undef ANIM_CMD diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index cf0e88129..2c0c798b8 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -4624,4 +4624,19 @@ const struct MonCoords gMonFrontPicCoords[] = .size = 0x55, .y_offset = 0, }, + [SPECIES_DEOXYS_ATTACK] = + { + .size = 0x88, + .y_offset = 0, + }, + [SPECIES_DEOXYS_DEFENSE] = + { + .size = 0x88, + .y_offset = 0, + }, + [SPECIES_DEOXYS_SPEED] = + { + .size = 0x88, + .y_offset = 0, + }, }; diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 480133434..a3466ebe9 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -910,6 +910,9 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(LYCANROC_DUSK, gMonFrontPic_LycanrocDusk), SPECIES_SPRITE(ZYGARDE_10, gMonFrontPic_Zygarde10), SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonFrontPic_ZygardeComplete), + SPECIES_SPRITE(DEOXYS_ATTACK, gMonFrontPic_DeoxysAttack), + SPECIES_SPRITE(DEOXYS_DEFENSE, gMonFrontPic_DeoxysDefense), + SPECIES_SPRITE(DEOXYS_SPEED, gMonFrontPic_DeoxysSpeed), SPECIES_SPRITE(UNOWN_A, gMonFrontPic_UnownA), SPECIES_SPRITE(UNOWN_B, gMonFrontPic_UnownB), diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 0d92de828..bb490ea38 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -910,6 +910,9 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(LYCANROC_DUSK, gMonPalette_LycanrocDusk), SPECIES_PAL(ZYGARDE_10, gMonPalette_Zygarde10), SPECIES_PAL(ZYGARDE_COMPLETE, gMonPalette_ZygardeComplete), + SPECIES_PAL(DEOXYS_ATTACK, gMonPalette_DeoxysAttack), + SPECIES_PAL(DEOXYS_DEFENSE, gMonPalette_DeoxysDefense), + SPECIES_PAL(DEOXYS_SPEED, gMonPalette_DeoxysSpeed), SPECIES_PAL(UNOWN_A, gMonPalette_Unown), SPECIES_PAL(UNOWN_B, gMonPalette_Unown), diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index b2915545e..2713581e9 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -910,6 +910,9 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(LYCANROC_DUSK, gMonShinyPalette_LycanrocDusk), SPECIES_SHINY_PAL(ZYGARDE_10, gMonShinyPalette_Zygarde10), SPECIES_SHINY_PAL(ZYGARDE_COMPLETE, gMonShinyPalette_ZygardeComplete), + SPECIES_SHINY_PAL(DEOXYS_ATTACK, gMonShinyPalette_DeoxysAttack), + SPECIES_SHINY_PAL(DEOXYS_DEFENSE, gMonShinyPalette_DeoxysDefense), + SPECIES_SHINY_PAL(DEOXYS_SPEED, gMonShinyPalette_DeoxysSpeed), SPECIES_SHINY_PAL(UNOWN_A, gMonShinyPalette_Unown), SPECIES_SHINY_PAL(UNOWN_B, gMonShinyPalette_Unown), diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index 206637c85..1fe950bc6 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -908,4 +908,7 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_LYCANROC_DUSK] = _("Lycanroc"), [SPECIES_ZYGARDE_10] = _("Zygarde"), [SPECIES_ZYGARDE_COMPLETE] = _("Zygarde"), + [SPECIES_DEOXYS_ATTACK] = _("Deoxys"), + [SPECIES_DEOXYS_DEFENSE] = _("Deoxys"), + [SPECIES_DEOXYS_SPEED] = _("Deoxys"), }; diff --git a/src/party_menu.c b/src/party_menu.c index 1d4952375..f9e073193 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -915,7 +915,7 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) DisplayPartyPokemonDataToTeachMove(slot, item, 0); break; case 2: // Evolution stone - if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, 3, item) != SPECIES_NONE) + if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, 3, item, SPECIES_NONE) != SPECIES_NONE) return FALSE; DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NO_USE); break; @@ -5017,7 +5017,7 @@ static void Task_TryLearningNextMove(u8 taskId) static void PartyMenuTryEvolution(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; - u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, 0); + u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, ITEM_NONE, SPECIES_NONE); if (targetSpecies != SPECIES_NONE) { diff --git a/src/pokemon.c b/src/pokemon.c index 2086f02dd..2898c8fed 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5304,7 +5304,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov // Evolution stone case 7: { - u16 targetSpecies = GetEvolutionTargetSpecies(mon, 2, item); + u16 targetSpecies = GetEvolutionTargetSpecies(mon, 2, item, SPECIES_NONE); if (targetSpecies != SPECIES_NONE) { @@ -5669,7 +5669,7 @@ u8 GetNatureFromPersonality(u32 personality) return personality % NUM_NATURES; } -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem, u16 tradePartnerSpecies) { int i, j; u16 targetSpecies = 0; @@ -5857,6 +5857,10 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) targetSpecies = gEvolutionTable[species][i].targetSpecies; } break; + case EVO_TRADE_SPECIFIC_MON: + if (gEvolutionTable[species][i].param == tradePartnerSpecies) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; } } break; diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 18c1bf78b..8efecfaf9 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -931,6 +931,9 @@ const u8 *const gMonIconTable[] = [SPECIES_LYCANROC_DUSK] = gMonIcon_LycanrocDusk, [SPECIES_ZYGARDE_10] = gMonIcon_Zygarde10, [SPECIES_ZYGARDE_COMPLETE] = gMonIcon_ZygardeComplete, + [SPECIES_DEOXYS_ATTACK] = gMonIcon_DeoxysAttack, + [SPECIES_DEOXYS_DEFENSE] = gMonIcon_DeoxysDefense, + [SPECIES_DEOXYS_SPEED] = gMonIcon_DeoxysSpeed, [SPECIES_UNOWN_A] = gMonIcon_UnownA, [SPECIES_UNOWN_B] = gMonIcon_UnownB, [SPECIES_UNOWN_C] = gMonIcon_UnownC, diff --git a/src/trade.c b/src/trade.c index 5ba26842f..c58c8d21f 100644 --- a/src/trade.c +++ b/src/trade.c @@ -3735,7 +3735,7 @@ static bool8 AnimateTradeSequenceCable(void) case 72: // Only if in-game trade TradeMons(gSpecialVar_0x8005, 0); gCB2_AfterEvolution = CB2_UpdateInGameTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES)); if (evoTarget != SPECIES_NONE) { TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); @@ -4250,7 +4250,7 @@ static bool8 AnimateTradeSequenceWireless(void) case 72: // Only if in-game trade TradeMons(gSpecialVar_0x8005, 0); gCB2_AfterEvolution = CB2_UpdateInGameTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES)); if (evoTarget != SPECIES_NONE) { TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); @@ -4293,7 +4293,7 @@ static void CB2_TryTradeEvolution(void) break; case 4: gCB2_AfterEvolution = CB2_SaveAndEndTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES)); if (evoTarget != SPECIES_NONE) TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); else if (IsWirelessTrade())