From 1f1eebb104dd3f4e90f9dd3405af6ed8de48b443 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 12:53:41 -0300 Subject: [PATCH 01/19] Defined the species for Deoxys' forms --- include/constants/species.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/constants/species.h b/include/constants/species.h index c10f0051f2..a97ad904de 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 From d119307f02d330992b0a9005de9925cdf6a4a78c Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 12:55:44 -0300 Subject: [PATCH 02/19] Defined the sprites for Deoxys' forms --- include/graphics.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/graphics.h b/include/graphics.h index 60705b856a..f9d6c3df17 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[]; From 8ce522d6c9d1d20400313f869fe73b62250f0ea7 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 13:00:42 -0300 Subject: [PATCH 03/19] Added coordinates and entries for the forms of Deoxys in the sprite data tables --- .../pokemon_graphics/back_pic_coordinates.h | 15 ++++++++ src/data/pokemon_graphics/back_pic_table.h | 3 ++ src/data/pokemon_graphics/front_pic_anims.h | 36 +++++++++++++++++++ .../pokemon_graphics/front_pic_coordinates.h | 15 ++++++++ src/data/pokemon_graphics/front_pic_table.h | 3 ++ src/data/pokemon_graphics/palette_table.h | 3 ++ .../pokemon_graphics/shiny_palette_table.h | 3 ++ 7 files changed, 78 insertions(+) diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index b1fa314cf7..153ddfda25 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 = 0x4 }, + [SPECIES_DEOXYS_ATTACK] = + { + .size = 0x87, + .y_offset = 0x6 + }, + [SPECIES_DEOXYS_DEFENSE] = + { + .size = 0x87, + .y_offset = 0x6 + }, + [SPECIES_DEOXYS_SPEED] = + { + .size = 0x87, + .y_offset = 0x6 + }, }; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 1cbcffb9f7..14c8a29f85 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 640fb9bf80..8e971c523e 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -8416,6 +8416,24 @@ static const union AnimCmd sAnim_ZYGARDE_COMPLETE_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_DEOXYS_ATTACK_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DEOXYS_DEFENSE_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DEOXYS_SPEED_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + static const union AnimCmd *const sAnims_NONE[] ={ sAnim_GeneralFrame0, sAnim_NONE_1, @@ -13126,6 +13144,21 @@ 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, +}; + +static const union AnimCmd *const sAnims_DEOXYS_DEFENSE[] ={ + sAnim_GeneralFrame0, + sAnim_DEOXYS_DEFENSE_1, +}; + +static const union AnimCmd *const sAnims_DEOXYS_SPEED[] ={ + sAnim_GeneralFrame0, + sAnim_DEOXYS_SPEED_1, +}; + #define ANIM_CMD(name) [SPECIES_##name] = sAnims_##name #define ANIM_CMD_FULL(name, anims) [SPECIES_##name] = anims @@ -14038,6 +14071,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 f377a2333f..5bb28efd6e 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 = 0x0, }, + [SPECIES_DEOXYS_ATTACK] = + { + .size = 0x88, + .y_offset = 0x0, + }, + [SPECIES_DEOXYS_DEFENSE] = + { + .size = 0x88, + .y_offset = 0x0, + }, + [SPECIES_DEOXYS_SPEED] = + { + .size = 0x88, + .y_offset = 0x0, + }, }; diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 480133434e..a3466ebe94 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 0d92de8280..bb490ea38f 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 b2915545e2..2713581e9b 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), From 63a8ba2b0566d30e3999658c424e9a9fab0779b9 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 13:01:34 -0300 Subject: [PATCH 04/19] Set the InGame names for Deoxys' forms --- src/data/text/species_names.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index 206637c855..1fe950bc61 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"), }; From a3cc1a2edc85482ace79905670c65477aa44b70e Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 13:04:01 -0300 Subject: [PATCH 05/19] Added the base stats of Deoxys' forms, thanks to UltimaSoul --- src/data/pokemon/base_stats.h | 74 +++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 2dca94a4ad..a7eec55563 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -22891,4 +22891,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, + }, }; From 30cd54088815aa686b3a7186357e9a7174ed03f0 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 13:05:38 -0300 Subject: [PATCH 06/19] Implemented the level up learnsets of Deoxys' forms, thanks to UltimaSoul --- src/data/pokemon/level_up_learnset_pointers.h | 3 + src/data/pokemon/level_up_learnsets.h | 56 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 6b97b82811..e371d74228 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 3f5491c623..5bc79d3bf8 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 +}; From e6f22f29931512b2f733cb68ef5d3d687242d566 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 13:12:26 -0300 Subject: [PATCH 07/19] Defined the paths for the sprites of Deoxys' forms --- src/data/graphics/pokemon.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index ba619aac74..4d9d88fa3d 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/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/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/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"); From d18bb3198360e8f51b18355c9f93cc1e88209309 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 13:13:36 -0300 Subject: [PATCH 08/19] Linked the icons to the species of Deoxys' forms --- src/pokemon_icon.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index eefd5c9720..6a23971c7f 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -932,6 +932,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, From 179741446f9f295d139a64f0677747a8e68af399 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 13:30:36 -0300 Subject: [PATCH 09/19] Added the icons of Deoxys' forms, coming straight from Pokefirered and vanilla Pokeemerald --- graphics/pokemon/deoxys/icon_attack.png | Bin 0 -> 456 bytes graphics/pokemon/deoxys/icon_defense.png | Bin 0 -> 414 bytes graphics/pokemon/deoxys/icon_speed.png | Bin 0 -> 376 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 graphics/pokemon/deoxys/icon_attack.png create mode 100644 graphics/pokemon/deoxys/icon_defense.png create mode 100644 graphics/pokemon/deoxys/icon_speed.png diff --git a/graphics/pokemon/deoxys/icon_attack.png b/graphics/pokemon/deoxys/icon_attack.png new file mode 100644 index 0000000000000000000000000000000000000000..ae34130ee00e4ee1309d95b33964fd2c547dccdc GIT binary patch literal 456 zcmV;(0XP1MP)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00001 zbW%=J06^y0W&i*IMoC0LR5*>*ld*1uFbszC1o89qg>qBLMz-=ISKZ^>Ld$ktTFAsL zB_LHILIT`4B-hZXLxnxW6-KmbFJwyPLn?H~vq%N#j-@DW zZDD}Bvb-o2?!a8ZRDR%FY&%y2n@SWiUU+f`e7s<63YE(Zx+e+^L($5$r4p{4vY?XV zauS(j?41Nqa%rZM7!SiH*kY-%U$M86KT{Kn#;8nWyea0ID%?kOFLG>kr#j!l_2Oy( zp}Bp~ei!a_9k|e}7a47fCgi%kclAbpZJi+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00001 zbW%=J06^y0W&i*I97#k$R5*>zk~?n0FbqI-0`o|{4Ku~wtR=QCk|MXM5Wq#Y6dej} z&63!fBovUX(zfJJffgOjO%J3Cuk*v!PbWA&OA zY6k7`@?TnM=bXz~@@W`_OQ1v<_Z}F79 zAf!VVkKcoibeL?Q8bvyY>wJ9gNe8jCVbEc1L$AZyhX3pE4O`#uFN3BVz5oCK07*qo IM6N<$g47wgegFUf literal 0 HcmV?d00001 diff --git a/graphics/pokemon/deoxys/icon_speed.png b/graphics/pokemon/deoxys/icon_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..674b93a9c1dcaaf8caf68dde7ba7e340fe623df6 GIT binary patch literal 376 zcmV-;0f+vHP)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00034 zNklb>k6o%gkc*@d|d-OuiR<<(LK1T;1DT=yeL#9i*7>rcOmL=p@NC=Rw zU7BCA44;2J8~FoxydYH@A|QV(&rnKQ-b4n=BBkg~t^m`&imnu3R{d!ar2zP>hPf&L zuIl>^z^aCZTwUoKVe28DXx+|TCU~&Z`$qdNgClHY9m!k8J8XBH^n9y~nzg%03igtK z(c_c-YAu}g6<9EwX2UZ8_|(8g4lIMXVjp>1YWHEk!NcUg=ur89Q`Dgm`OCbDI@m@g zf`={Y;D{3O;TClWC)me1IE3q>Lm=^880b}pc*-<3=}?k%sDQobP!fN<;ktmo`SAm$ Wdc_ue-`=tS0000 Date: Thu, 23 Jul 2020 13:37:47 -0300 Subject: [PATCH 10/19] Added the cries of Deoxys' forms --- sound/cry_tables.inc | 6 ++++++ sound/direct_sound_data.inc | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index dabd9ce5b6..3140d5c8ff 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_DeoxysAttack + cry Cry_DeoxysDefense + cry Cry_DeoxysSpeed .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_DeoxysAttack + cry2 Cry_DeoxysDefense + cry2 Cry_DeoxysSpeed diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index 8b51cb18cc..441f589f3a 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 +Deoxys_Attack:: + .incbin "sound/direct_sound_samples/cries/cry_deoxys.bin" + + .align 2 +Deoxys_Defense:: + .incbin "sound/direct_sound_samples/cries/cry_deoxys.bin" + + .align 2 +Deoxys_Speed:: + .incbin "sound/direct_sound_samples/cries/cry_deoxys.bin" + .align 2 DirectSoundWaveData_register_noise:: .incbin "sound/direct_sound_samples/register_noise.bin" From dc67bd37491df71ba7c7b65541c10094107470fd Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 23 Jul 2020 14:34:01 -0300 Subject: [PATCH 11/19] A few things: -Inserted the sprites of Deoxys' form -Fixed mistakes that I made while adding their cries and sprites -Tweaked the Y coord of Deoxys' Defense Form's back sprite --- graphics/pokemon/deoxys/anim_front_attack.png | Bin 0 -> 1727 bytes .../pokemon/deoxys/anim_front_defense.png | Bin 0 -> 1300 bytes graphics/pokemon/deoxys/anim_front_speed.png | Bin 0 -> 1625 bytes graphics/pokemon/deoxys/back_attack.png | Bin 0 -> 774 bytes graphics/pokemon/deoxys/back_defense.png | Bin 0 -> 678 bytes graphics/pokemon/deoxys/back_speed.png | Bin 0 -> 746 bytes graphics/pokemon/deoxys/front_attack.png | Bin 0 -> 967 bytes graphics/pokemon/deoxys/front_defense.png | Bin 0 -> 848 bytes graphics/pokemon/deoxys/front_speed.png | Bin 0 -> 951 bytes graphics/pokemon/deoxys/normal_attack.pal | 19 ++++++++++++++++++ graphics/pokemon/deoxys/normal_defense.pal | 19 ++++++++++++++++++ graphics/pokemon/deoxys/normal_speed.pal | 19 ++++++++++++++++++ graphics/pokemon/deoxys/shiny_attack.pal | 19 ++++++++++++++++++ graphics/pokemon/deoxys/shiny_defense.pal | 19 ++++++++++++++++++ graphics/pokemon/deoxys/shiny_speed.pal | 19 ++++++++++++++++++ sound/cry_tables.inc | 12 +++++------ sound/direct_sound_data.inc | 6 +++--- src/data/graphics/pokemon.h | 6 +++--- .../pokemon_graphics/back_pic_coordinates.h | 2 +- 19 files changed, 127 insertions(+), 13 deletions(-) create mode 100644 graphics/pokemon/deoxys/anim_front_attack.png create mode 100644 graphics/pokemon/deoxys/anim_front_defense.png create mode 100644 graphics/pokemon/deoxys/anim_front_speed.png create mode 100644 graphics/pokemon/deoxys/back_attack.png create mode 100644 graphics/pokemon/deoxys/back_defense.png create mode 100644 graphics/pokemon/deoxys/back_speed.png create mode 100644 graphics/pokemon/deoxys/front_attack.png create mode 100644 graphics/pokemon/deoxys/front_defense.png create mode 100644 graphics/pokemon/deoxys/front_speed.png create mode 100644 graphics/pokemon/deoxys/normal_attack.pal create mode 100644 graphics/pokemon/deoxys/normal_defense.pal create mode 100644 graphics/pokemon/deoxys/normal_speed.pal create mode 100644 graphics/pokemon/deoxys/shiny_attack.pal create mode 100644 graphics/pokemon/deoxys/shiny_defense.pal create mode 100644 graphics/pokemon/deoxys/shiny_speed.pal diff --git a/graphics/pokemon/deoxys/anim_front_attack.png b/graphics/pokemon/deoxys/anim_front_attack.png new file mode 100644 index 0000000000000000000000000000000000000000..f731109ae0f00375c21b8c02d6ce53cf2fd132be GIT binary patch literal 1727 zcmV;w20;0VP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwKqw&Ka6q6?I2afhfWW{=kf4}wkT6hS zU_fyA`1ruU&{$AVczAGNKrpCSIK)Va)&Kwi32;bRa{vGi!vFvd!vV){sAK>D1{g_1 zK~z}7&6mHA<3tq4Jz5toJ)XVQ3M7!n3Dq_BglLNsa*`n|$j#-}CX}l zS)#ok{{Vs-iN9cRnd`RX3L5?n-pu&-Cbumq^277-dvBiKd-ILaeIeWU@XL7sI0+sA z5FI_>fes!5yzs*wsPuvHVG4z4xS$NR0c0uF#*~#lM^~d}s-)s~?FseC8kUfE-FCfy5he(11f3Q^eVG zF*;;`vQy3|fp2FkegJShr~)1+;xsx0`0||xz?o507})N6unjBEw>)q;tnc})+YJfC>8b3+^%a^z0Up zq!7A!DXtmyzWSXr_648~f!vMW+NB`u9az}=|6XI#6!^=!Kyvov?vC>!G`YAYtjvh@ zv^EB5D&F7yEf;`br3ou>nhKDKDvVD`f7(QrkQ%@StQV?7t$Af4+n~xD@(i=sM`7Sf zW0i?@3xK5WqiDh;V1S8Gg%BE*4~N<&0Gz2Nx5UqW2_Rns0d=Q*AKlLG0nFAOs5cz| z;QGqPP9;DBh7LmZu0x|}dJH%Lz^4OFU7t#myDRmPY%2h2o4W8IDf1~)fU31DZ3CWs z76O`tt+;_2l^!fTs{bnc^(fA)L^-oPs8dnb_W4m4KC2o2UR|N_eNfmKu85)f6x%yltbtXOMyka0S{E;r5fJ>yk- zK$3B8UJo{T-dquF0|11^WFXed7SNfn5G&4}?#<2FghaDR*M(`Pk{2X?{8rDMA?Ost^=3T|G&l zhhbQax*lpC`QJ)l_$=&tP$5`h2`s1apld*fpqlvn``7U|({2HR2N^=HrohKvzFz(@ z^X;w&8G~CGyZn7`}144ViRH_udzx8YVAOSG2 zDc2c&yyrXu;Z>D@%;T=~0E+86po6!srt(}WtBgR5;6bI)@j%D0(N90jm@jZy-T++2 zIs`<=*Aw=nc>C(zUz436zPfAX`B~`!41|R3-$M+LOHSCi0@$eZ00vS6@qKakUgdhi z&bA7;&>o=hM2HQk4+?b-pazhe1kw3<3KGPKKw&5ef;lRE)mM0rt2g<)0ycT50IFEf>^KmwG5Mxkyk@chqsq!h8nb+@`kY;zs{)hA~JG z1b+bF^j|dHV^xh303a`$Q>ifSk3$5v=@ADKgeLj+9xwz2p*JQ~OuV`219`Sklfz0T z0r;qTp?>9YsZp{NVTdP5yMP7LNsksO!3gWG!w6YF)3PWDoe;6U1Nq#w0SLhh(YOzw zi%No60sv4LR^9=~raIp%V7KW4jfUAlEf6v91_?gv={Vo82}^tbms$o4b54Ag_Cg%D zMUXiI0CoN?p>b#Ynm(Hl)&}|tWWr{CXIzq=fIzGp<2`}Vzku$Ybi8-Nk^i}d@gKp& VqQXEIhPwa&002ovPDHLkV1mW174rZ9 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/deoxys/anim_front_defense.png b/graphics/pokemon/deoxys/anim_front_defense.png new file mode 100644 index 0000000000000000000000000000000000000000..ee4259be5bf02c97b5853ddc08b617d8da043c53 GIT binary patch literal 1300 zcmV+v1?&2WP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwKqw%fP&nXlKwv;H@UW18z`#h5pfFHi zm~fC77#R5Y_`tx>U_fvH000000KJy%DgXcg32;bRa{vGi!vFvd!vV){sAK>D1Z_z~ zK~z}7?Uuie+eQ$^$y5TXkn1D|Aq|HvgzdP4#DY3MgOLZY3zANEF0=}R0688&3A)rN zl7=RY(_tUL3E~GalBdZm{~bxKm@28Vg&=5un*C;WcK5T!!*#9M;iGsyH*bIS0%0x& z`vy_KrSNJ;8z~vBj9KAvS_Y$!9;&l`q!4JX{XI1*aI*)fI;FH+ff0VRBo~SDm!1C~pTcyF~*I#J2R=K>!onh3BxujY)*g5_sqWr$md~or=&J5lTd;s1Q6)O@QDbZBwN)U7V@3 zS8*zs@Nh$Y@A1V;Hc`oH0L7Cft>AM~c?QT-lzIg%!2o!d>jpzb<8&XVNUfY$=Md&)o zebxfrdb{Hq5M!Y9TEJe*oi62|5Nr&f%ruZr0lx=U&;q>Al7OS%z5{j;ngQrkvl@s7 zK&1h72H+UbN52K?nS2Ov)d0;E-R!%rb(e-yI0QJ*r%?mLQd&-|tRYZL0gJlTD(3*J z28wyWQPw=r4ZEILsETep^Kexgapo2O7svk=5#hh9UPr!XFukjFN^ssU|$icXyJwX8^ zTSs))RdA}0`Y?no1eX*br)4ruUo|lX08ZBwAeP$%-mZ=hvV@=*YotUefUHB%SxqN^ z@EPg=l0wuODqy20DWu0P*Yi>)mF`N%9XW`H0L3Ay=Vh9qYuT@i^js`*_;CDb^1|EJFy}>X7cki?QT@5n> zkVlWev)@cWob`|1-TUJ?u-HKl?BndbQjXs}-2})BK>P3p&vvF-_a25EOLhV1)9{SD z1>Hk219YYIj4f3@0vDQc>_ChmhW^16V&orYh7JD!bpAmP%laE8qydi9vKDs$0000< KMNUMnLSTaKNI&!d literal 0 HcmV?d00001 diff --git a/graphics/pokemon/deoxys/anim_front_speed.png b/graphics/pokemon/deoxys/anim_front_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f490d2f25f960e8349080d294be264f3720b3e GIT binary patch literal 1625 zcmV-f2B!ImP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwFi>Dfkf4CTz(6P<;BY_~7#N^XIKaTr zm~fEz`1oKza9B`KczAFC0000007Sij8UO$Q32;bRa{vGi!vFvd!vV){sAK>D1+qy* zK~z}7&6dA!ayltUtK1}(AXgyPaqDc7S>VPJ%6fN- z3kClI1xR!>P;;U=(VzrP<*h)j?Ei)L#$K;y)(fIziflad@tYrh^S)p5Ut6c!{b!&z z^cZ9KpEGU;TzB|kz}T3aMeS3#(7Yg+u(KQAX=7L*0g*v)b{n#D(n^GYygLadL6Ef0 z!WKbzr-ATk`$G95fJJHKkf#|jX#$o z{@!kYN-0m>-`?2?keQUp>Fcj{1JnoN*Jw9DZlrv*-0FR+3$3Rkq)aZi0(6HSw!t3d zajLjI-syTr`<(N>cc_Xi=l1KJ{!w>NN52}r9~VMI_V_@*<1i+tM?B8%%@Cd5=n8)s zZjYbD>g9LJ0D6N+zb+-eAwtB(7eA+wF^=y$zT{)V##E)*%kP`J=(sw*&oSfACS#$5 zS~jQX>CfgYgAfR35ektCWdzU<{!IYHnD~o0PK{mm2ReWppFuVzV@Jku)|{Yoqz}kX zh#z3Sj?W7dr~?qX(8Pr*#0_f+K*%iu!4lSZ8=RW~h>w?m;<$VYz-$plMgW`vLxhlx z-Vy*gIbI(kDGx#a+)6m@`EjaL4fJ&Ya&}$;(yxHTi^>_wsmg*uLwWI+lt%)Aa->rR za>5EoR=F=-A!?vsRxRgJ&p_piILoA~)J&f03?RK~hAPD?fWyTpfqDs5De&Qxv%3-O zHF5Vd1giVFE^1C*Abjx*%0l0f08Ud!8GKc_8 z`GdR3b_np$xIAOrcut?;30G1_#2hjh#!z+9VAeh^Gr3yM&6_ z5(ONHJM^9|K>MMn%58Di4g}f)fzWF)5G>FZWTEZBvk%%AT4{)>3ajtuZEr`=$1VIao>*!W4xycxJK3lJ$E0@Q7*ZEey zO`uGd7b^sGfKd?{Kv|DgaSr~1g0UZnHsA?5lu<;uJK$MSX+r5zN`OMIzA>DOq85#E zG5Yhyb*4bxq5-iQ_{cRt)hau&0lLbs*ZuWer$L3Mx z%CZOWN~3JiZGXX=ENg$xZ00000NkvXXu0mjf`E>Y$ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/deoxys/back_attack.png b/graphics/pokemon/deoxys/back_attack.png new file mode 100644 index 0000000000000000000000000000000000000000..14da9a37fae1ab3b9107dc2d2d9dcb26e88f0f78 GIT binary patch literal 774 zcmV+h1Nr=kP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwa9|Ml=s>8bI2afhaL}kopm1P#z&K!7 zXb712`1ruU&`?lNczAGNKrpCSIM=TPBme*a32;bRa{vGi!vFvd!vV){sAK>D0$)i) zK~zY`m6Wk=+b|G@Wq=P5hC-(+St5KWiV|Xx(K30QhWVeph zyYxs(v0_mY%0bJ0`tLvT?vnpJ{9yvniwQz!^C>`%OB5i-B^XRdFqn{F0_3=arX2He zU_zpR2?=sJE)jsf#EkPBkVPbzlmQ_R0EK+&0YU~uJ7A;c5%-xxQWpm;McgT8kOr`UU72UvZL08BS2fWzt# z0g{wM>k{Hmj^Z6qQGn^D41j@_C|a9p9S2xz0+WH$niz_Qei%&Pfn0zZOu)$GuEN2% zbw$|0@GPyJ102fF9>3JWEBuNB8~ORw6=>_fHWufbxqb7%@4DuZxD>hdcd)bdAF29r z3Hcjv4_Musy_sB)xK>8E92Lm>b@{mP>MQfzmGRnJRBRC%IskOn_q)#Bk5VlFehRzu z?V3QL`_a7j^@kkp1&U*?p>sa$Y>MROn78c~RzSyu8{6&al9pk7b82l)>+-2L3fbaX?AGrq>?? z2-qHPcSROb4=@U0d7+QRl5%9tgAjloNU%A!T6;rHlHwk)6_R74+q)o-=&U7dXI;y? zI63w;%>$4VUu0`$D{B$LR8ZmW%^q5SOs~-a8kWB8OS8X_#JT~lq?b|#2S^Vvvp?%F z!~`T)a=OG_0MZt~8&DEV_eDSj*)jm9Gt(n$pgBqM51pLc33TEBQ2+n{07*qoM6N<$ Eg4Q)u$N&HU literal 0 HcmV?d00001 diff --git a/graphics/pokemon/deoxys/back_defense.png b/graphics/pokemon/deoxys/back_defense.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbba1a7a1f2cb6d45635b9e473ae55ca115d248 GIT binary patch literal 678 zcmV;X0$KfuP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwa9|Lqs5toOKwv;H`1sgx(5OhDa5!LC zV0ge77#R5Y_`tx>Xb6}9000000Mni`!TD0sl!v zK~zY`?bNZ3oG=go(4~v07OuF6DjteO?pQZbK8VzJMFvsrr7_|w7B`Fhl^Ku07{slV zI+x*0Z)XW1TfGR{-A zzTd2XG2r~KCKg|Dh0dN~##_(vl2|n9K()szwNB95t zWek&Vq7L9@WIP68>4la7Xl!qzgmuv3o_fIBU_g5@p@6WbR1Zs+G)M-y%pvmy3VQ6( z8khkT8tt9lh?w(yP-Y-_PH2_9ub;ngVDg}5(9s23*yVX%;gn(w=;l+!(t-bOQ?x4> z-PQMlQXF7My71jT{p%vYhh;f2l15tA=NYH~Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwIAB;vpm1=|sBmBq_~<|w7#OIiIKaTr zV0ggz`1oiDm{3qqczAFC000000J`2Kxc~qF32;bRa{vGi!vFvd!vV){sAK>D0z*ke zK~zY`?Ub=@+b|G@Rlwj}yFllHPMal5>H=L|fVN)1lvddgs6_=5L(;uok%1Glc8cGn z|B09zm^fQHJalm*T4YmR!Iw4fV6upk=pAV}q`(~%Nw;&l~fQN@AtC{qAZ zn%wJMT+htb)nQg~*|g4CZxF3uoZ~OQZxT9WixMWPTYlZW8evS--?dgE!Rsl}pE$KI z@&Oj7x2UeR){TIR$TOu2>#XFIe@}nj>%A_iMF<9dU)3-w=x80X2imtu4M7@&*S9=G zo}+ttoB|+n=$*+9XF#qd_aV01Yem~C6Wjt^tdXmU1#b=nW+S9Q8xH^$%kNh;n85LB zzx9R(VXOVLh6hOFfVP(O0fR8Ob(dc*K%b8m0$c72WW>Y6@)BaE!x_|y0n)AGP3`3+ z#HI}AtKYR22dOVC1L6{5rtvrRK;f)KHSG_ISe$`PIRXO~;dmy6e|{KK!l3gd2E%LM zIJ(LvDf5y{6Lc8ZhRzmy8GsE96+aD!*@m<}L;z+bReb#-0BPx#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwKqw&Ka6q6?I2afhfWW{=kf4}wkT6hS zU_fyA`1ruU&{$AVczAGNKrpCSIK)Va)&Kwi32;bRa{vGi!vFvd!vV){sAK>D10YF6 zK~zY`g_XaK+CUJ-y*d{z{f9%R6p1`GsnXbcLKIQt<5uJ%xjBRpDG_Ex9w5baB#M!x z^!Egj@&b8+6Q!@COo}vlj?C`bU^sJZfsOa)Z)Rt|9c%l8nA-EhJ^`GCCjbJMCnA7< z3h<)mBY=ouSN~#>kN-B zgskq8(GTxMEJRL^X|iQoMP(w4WCl*-v4Bj zzC(0J5O<-LcEcU|hzdpUZ)!O^gMZl?B&TmT8^+d=&iK@!WkrnJtr(VR{b%!AOdvr^ z31e*U93Tp{)?SwJlteamwt%JK{92w+V^B$C3sOZRo~EyhI0{`MR!Pij02aN7<0~ov z4J9I(LZnqOY%p~M7?p?I;9r9hAb|oxaQm!?AFiJO)Kn3`>-z|}fsC<|1rUIyk`QOt zhB)pY1I`c#z-QnFAS72Kc^NM&0KE+^ZY0nEs05_fva}9(V#}QXM2yu$);JqgNro^4 z$D-7tc1MV3O9>bg1j-x{F!2Ng&>5mn=aB-E$O#mH4F>H>D27U00jLUQOLaX%K<+&2 zBXEl;lqJqmmBJY$Wf#=3%_Qb(R02j?EusRnKD?gfE8HYGagnOMvhxJC+X~{KC?8lo z;b|1gli}8UHpbu!xrv1Kuu>uw?15WrInW(5waQn)jRIDDzUzO4(sZFd4wh*s;DYnr zd6NJsU%+e?Fx$CX0K7Ud17(KZjMjRG(@h7{a?wn^)1B2Dq|?pyslUkc-4k9HKp@ht zd_JGlfV~bY0OB*Y+-B9CS%*Mb=@QtF@Dy-n`#s$0F86`bqzC{2 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/deoxys/front_defense.png b/graphics/pokemon/deoxys/front_defense.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd7365bcf160981117751500713f3e2354fd14a GIT binary patch literal 848 zcmV-W1F!svP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwKqw%fP&nXlKwv;H@UW18z`#h5pfFHi zm~fC77#R5Y_`tx>U_fvH000000KJy%DgXcg32;bRa{vGi!vFvd!vV){sAK>D0;x$v zK~zY`ebq5<)G!nWaEB?nsj&-G5ldb=oV>+PpeS2EL)8xeLvm%K137|_Xe%YCFf+gs z;-M%XfqoDKpN8jL?nrXJcsj*D+5h+KrmueiN3<{DuAjY2zxY9j@u!d01S>!P z+BQKLm)Y6|9%a1xozo8Gsy(p*QAYO$#Mv!cTk$xK;KS8vnA{^`Z3E}X0Zy?SHXsBB zE$0V;qpmS&f6!?p8kMwxJ52ukC9o{4KrD+e`TmVgYnf|1$Th8CPO~ZyYTF7<&^7?z z|IGD1a8y+=Dic7~Zl;wTI0n#ERqTf#Kr^(2nJEjDmWhZ)X;Z1Ym(p2gg%XNmLie6a_obMm6dgcy z?9&c`q?CIgFH~c8FcB<(mw7HEEw6!_W>%8}byS%bLQ*~*gj6P**4cp&n&4Q|H-y?f zt&^(E%|+u<^DP*Kpdtte%C`{IECX-~3dD#*y#;TC1*o8C?Cl~qD4)*f^0000Px#1ZP1_K>z@;j|==^1poj5Fi=cXMfjkwFi>Dfkf4CTz(6P<;BY_~7#N^XIKaTr zm~fEz`1oKza9B`KczAFC0000007Sij8UO$Q32;bRa{vGi!vFvd!vV){sAK>D0}x3> zK~zY`os_?C(?Ar*FUY#7Lz76I=|u_yWoRr~Ar;B0F7Z+(a(Hz^asl;DLXDFf;O~H$ z1$M;7mP$8WHsmS(UwCIbj-5D2aEoKV&wbyIy!X(*o<_6zcc9gADW&$8`%WE0nF2&H)}I7)fNF^VkS9YnWGt%nLgy^FPl4dFK2Sbq5X9?< z&D?qbaR^~Ji*8-Fiw+TUe-^!Kzc>T{0l>GfhXFM9XR6De9tN;d>YDs|d=NlWrK0N} z9}WZ92jXXV7(ipCJ}&mYK5D{gr3!|s#hyU3dhhUs;s_!tQx zllR|ESh3stj<2|fsE4(Q@4l3?XpmIj=eFbfLr-X-7iAZ%^lx((EC9lp2SOO3D+1|@ zKW0F9$e&ATDp|HqQvv1mp&KL5QBuZb2aR4@AU{Grv;FD~k}6OLAUscr8=Z(Ttr0+I zVga^*7$a}uC_e`xH_SX_uCj%J19kITsh+SvW@%(XPLKo9YV9i`L;wH)Jz(`p#<3z= zPt|qW0jQOG$Xh%II1Ek(6d~lRz=tZw_g%;}A}6s0^7-5>HD{ezzzPtVz{hq5IGeH^ z#mQ<)!l|O%NK;IpPS9z`m9*!%d8N5(r6{2;1+N3$fB}xSIstb^_NT zc{neCEQuo-KNPJZv?&4ELnPWQnh`_mo+DiOCld2^3&8xCVo7B#gfX3~q8VX)mRrE~ z8#ZQ1Oi4hK;>C$l0Zz_DNno^HgBHMsFUhvsL10-L9?vFjNNL{mT2vPRTv?uN?RXWN z>W%@QrnFR` Date: Sun, 9 Aug 2020 20:59:22 -0300 Subject: [PATCH 12/19] Updated the Deoxys Forms' battle sprites' Y coords --- src/data/pokemon_graphics/back_pic_coordinates.h | 6 +++--- src/data/pokemon_graphics/front_pic_coordinates.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index cb38bf48be..44fac4b43f 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -4627,16 +4627,16 @@ const struct MonCoords gMonBackPicCoords[] = [SPECIES_DEOXYS_ATTACK] = { .size = 0x87, - .y_offset = 0x6 + .y_offset = 6, }, [SPECIES_DEOXYS_DEFENSE] = { .size = 0x87, - .y_offset = 0x9 + .y_offset = 9, }, [SPECIES_DEOXYS_SPEED] = { .size = 0x87, - .y_offset = 0x6 + .y_offset = 6, }, }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index aab50769d6..2c0c798b80 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -4627,16 +4627,16 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_DEOXYS_ATTACK] = { .size = 0x88, - .y_offset = 0x0, + .y_offset = 0, }, [SPECIES_DEOXYS_DEFENSE] = { .size = 0x88, - .y_offset = 0x0, + .y_offset = 0, }, [SPECIES_DEOXYS_SPEED] = { .size = 0x88, - .y_offset = 0x0, + .y_offset = 0, }, }; From 34ce08db0b7ceda4cd6d8ae79cec2499b1dde745 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 14 Oct 2020 20:16:18 -0300 Subject: [PATCH 13/19] Added Karrablast/Shelmet evolution method. --- include/constants/pokemon.h | 1 + include/pokemon.h | 2 +- src/battle_main.c | 2 +- src/data/pokemon/evolution.h | 4 ++-- src/party_menu.c | 4 ++-- src/pokemon.c | 8 ++++++-- src/trade.c | 6 +++--- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 7708dd2f84..e87f8f8220 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/pokemon.h b/include/pokemon.h index 6c98e0f970..e12ba5bd5c 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -346,7 +346,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/src/battle_main.c b/src/battle_main.c index d6191918fa..e7133a06f2 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, 0); if (species != SPECIES_NONE) { FreeAllWindowBuffers(); diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index e515f2117d..8057ac6f20 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/party_menu.c b/src/party_menu.c index 1d49523756..0b4e6cfa79 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, 0) != 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, 0, 0); if (targetSpecies != SPECIES_NONE) { diff --git a/src/pokemon.c b/src/pokemon.c index 2086f02dd7..9e7f7b0d50 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, 0); 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/trade.c b/src/trade.c index 5ba26842f1..60ab938284 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, 0)); 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, 0)); 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, 0)); if (evoTarget != SPECIES_NONE) TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); else if (IsWirelessTrade()) From 86334ca01181574a9c17b98568ee6b296cd59910 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 14 Oct 2020 20:50:33 -0300 Subject: [PATCH 14/19] 0 for SPECIES_NONE --- src/battle_main.c | 2 +- src/party_menu.c | 4 ++-- src/pokemon.c | 2 +- src/trade.c | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/battle_main.c b/src/battle_main.c index e7133a06f2..443893712e 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, 0); + species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits, SPECIES_NONE); if (species != SPECIES_NONE) { FreeAllWindowBuffers(); diff --git a/src/party_menu.c b/src/party_menu.c index 0b4e6cfa79..f9e0731933 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, 0) != 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, 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 9e7f7b0d50..2898c8fedd 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, 0); + u16 targetSpecies = GetEvolutionTargetSpecies(mon, 2, item, SPECIES_NONE); if (targetSpecies != SPECIES_NONE) { diff --git a/src/trade.c b/src/trade.c index 60ab938284..e5e5254a1d 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, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, 0)); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, SPECIES_NONE)); 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, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, 0)); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, SPECIES_NONE)); 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, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, 0)); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], TRUE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, SPECIES_NONE)); if (evoTarget != SPECIES_NONE) TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); else if (IsWirelessTrade()) From be2c56cc94100f3dfbc3eac87736bc3c550a15ba Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 15 Oct 2020 16:19:37 -0300 Subject: [PATCH 15/19] Shortened GetEvolutionTargetSpecies calls. --- src/trade.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/trade.c b/src/trade.c index e5e5254a1d..c58c8d21f8 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, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, SPECIES_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, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, SPECIES_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, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES, SPECIES_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()) From 2b95f9fc43bf05d498a50efe999b9abdfa38a56c Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 16 Oct 2020 21:04:11 -0300 Subject: [PATCH 16/19] Updated types and stats in config. --- include/constants/pokemon_config.h | 19 ++ include/pokemon.h | 1 + src/data/pokemon/base_stats.h | 370 +++++++++++++++++++++++++++++ 3 files changed, 390 insertions(+) create mode 100644 include/constants/pokemon_config.h diff --git a/include/constants/pokemon_config.h b/include/constants/pokemon_config.h new file mode 100644 index 0000000000..f0fcc5fc07 --- /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/pokemon.h b/include/pokemon.h index a9ce1d1496..f503f30cff 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 { diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 2dca94a4ad..4ce1409492 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, From 5ecac6ff9537a02e8097a95df4a12e30bd89f93a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 21 Oct 2020 07:29:50 -0300 Subject: [PATCH 17/19] Corrected Tsareena's sprites Some of its palettes were buggy as reported by Ryuhouji. This was fixed by Discord user Blackforest. --- graphics/pokemon/tsareena/back.png | Bin 763 -> 722 bytes graphics/pokemon/tsareena/front.png | Bin 897 -> 849 bytes graphics/pokemon/tsareena/shiny.pal | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/graphics/pokemon/tsareena/back.png b/graphics/pokemon/tsareena/back.png index 01177ce419a13ce0ef720516b3d96053e4bfca04..ea66ff8a2949873ef3744f0166e8a1b287639589 100644 GIT binary patch delta 668 zcmV;N0%QIA1=0nOBor`EOjJbxu;_>gKyWya=wN`D0MLB{d52T0$oW&K~zYI z-P18^+dvctaMeSJx2iOSWD2+FOd*r=0Rm3xWGJZ&+3XH3UA3IDg=SZR~$x%mivWmTz|smNz<&X6X93rf7XZk59P|Jm_fi1d zVy+I74m>LWqX2MZJ#Me%WFWmX=WnKY5D>hjpacd&s1mib168+4SsX-&DFxu^8me60 zfx0APB!mcohuIoE)iBFF1f4L;4O#>;|JBhBIv_qi_G3(+*5F8c5katweIUyw__5!J zAw;0RDSsL?;$<8(ny_plz$N_FUp3rqftk=im7gNGQvlZ>L8N!6dUBdC%e+INb~&3H z1t8DqR06dT&-`irDS#&KvJtP3;r@86=Xj7Yp3~F%oND*uehw55^4lbz8$kht`3Boy z5S9Xx=6rb6E(6);;*C3>`+LD;XtvsW!Nc&dwS5QFjwcVH-QEob=4!S2+A4z0Cp%b0 zQPkB-D6lz(A2N^T_SG)HzbkOK0ToJg;6-W-HlV83R|NC0p9k4V*AfsdRvGZ9zRPe8 z#54sYw@W^nseCqjOnU^Oz6ANFK_M0kQTS~B^XY? delta 694 zcmV;n0!jVS1^We%BpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%ZVuxQAUI3a)1 zK_(9X000SaNLh0L01m?d01m?e$8V@)00071NklBjE6vx#N3f`*H6p|?% z0$~c7oIN>SYP1MSDnmEBgG*N-IPxuQP#vx=E?ENh)}>(1(AikfFQGZ~8@TVCEcqnM z-rEN{bNBz<`@eg4w*JR>*6+VKsP}(@+qZ{+UMmQoyI+4Ev@U}d0_?mVh=cbx!Kq~lA#ROG5-yEVR5o$6=8!HTDk2hhB?GO6A`AW7js|}Q;OaGZ z1BiP9fSCzgBS8j);O$Kic{l(-;c?ssT5jh6a92bokU8)o0gPjyC_L`(a5J!WuJbqZ zG7vMGI-m&>l+r1hxr3vpSy~FF)Z78!c?}JYGtfg8W2KY?E{hsHZCL0Y0X-?V_fQ2; z|JgGd9W$Sn{gl+F4RC5)L>zyosSgZ4AHNhN0p?BNA<{IB0Y#qxD&eHrhazH#nP$(*ry8|^g%rPhyAAl_;gB0H*I)0o0>W`GNnE} zZTi%Fm<~!nwUJ+EW!;J^ot9;TU0^6{0ha50blR;0is#}@d!Gjff!Tk^?sN|VkE4^$ z0iby{dz3+UKQOe{>-CpT71%!6;W|l@zL`P;+ctbhJy`}H_5u8x22QrXk;6>DOLPpk zKttD81(tG928vEMGay;53&3;CQ_2mX<~hJhr{v>>))$LkxkoI`67Ww$gj%gs<=OnZ cVOf6x7ip3I+bwou000UA07*qoM6N<$g8mOFivR!s diff --git a/graphics/pokemon/tsareena/front.png b/graphics/pokemon/tsareena/front.png index 664c9c27945f979c803deb7697a0f68ea52fd6a4..9072ce8651bf8d7a3ad55bd90beb69972fcd013d 100644 GIT binary patch delta 769 zcmV+c1OEJh2hj$QB#}Woe*)Y|L_t(YiLKPnYtv910PxsbPUBHFtSFQmY*A23onS8_ zMyQv9jMNnooFipp!k{48xrFo^4`Wd`-?IZjL9m`gR*(#a2M^K*#s8s5PrK|gSYdu& z(x2;VJ?NJvdA#qZ-|sg`siOSvAVj_&(ZcJw8^)Y8pRnS=!n|wTe|sVUNvj9$5E+PA zU7%?RdsYGxU7%T3DWPf70thrsTuYWUCPJWDiHcYxdh-n8P58}H(&~be3|Ly259-8a zpc`d)I0ooY9yD#Sa<+#W47VW;xbk`LX>x1`2AF(a*?_Y4A+xYjuABu5qX5q0i}zRk zbowT)$AF?Tc6ojwf8+BMc_sxoDJ-X=oL_ppkDx38DmdmZ&IpT- z*N;w*(zj2K8Iuh$W9B=f5|lk?_29x^b)`2lZm-ax>QCAWc~!$oxd z22QXFmGn^e8@nRksQUhaY|85=epTds1m8gNER$7{^8K~y>H(F22)OlCzwX!bJB4=; zMEneZoxE=rf9rX(P!7Rp34Fzlv1Xd4(F1laK3V|4EE)(53dsQI<S9c5N@wPw*-0wuRTJAWsD8-ib_L|Jt%$#wFjc>SpbG= zk3qti7n__{6mLuMVpH-0sQ(NUHVvrLlJfWic7VlxD;2dm00000NkvXXu0mjf{rG1% delta 816 zcmV-01JC@?27w2VBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks&^R010qNS#tmY z4#NNd4#NS*Z>VGd00P=cL_t(Y$F0=QYtv910PxsbPUBHFtSFRsut7m7ae}>w7@=MY zGE!GWaE_FX34?;fa|rD>9!9HfzGnx5f?z#~tRNW-4<4isivL5Ao_5(~u)_Q%{k^_U zM87o2<9$E^_rWb90};CiC{4Jt z5|HQtYTJbbrP2ZjC=IR!+op0r?L;Y9B>M9V<8}9)1mQMCi!{MF<2VDBJ^H`f0f&(U>mY#t_-=`K02L01{1pPThFn?oR>jm&qupF~>~<#AN{P@>K0Z{uGcYzNvjAD_5q1 zUrXm|Nj|5+6i~E(Vo^N_n|YAmN>I#K#K&Sa}nH$v_K%;fxnRkTo&i2O908bf$Hg0k2Ud)Vvk@m3S2*6)NSi@77NQ}%f?9MhqP#yzqPxZ)Lh2*e1 zhtUFIkI=IU;UpF;1L2hiH;VN#y70?Roc<`tE7J@#Pu8rB|)p64MLsXYM+=aty> uyrNXfN+qV84%B}J3O@~~%3p?}{04S_#eSvhXhr}F0000 Date: Wed, 21 Oct 2020 10:24:03 -0300 Subject: [PATCH 18/19] Fixed Magnemite's and Magneton's battle sprites Their normal back sprite palettes were glitchy. Discord users Jaizu and Blackforest fixed them --- graphics/pokemon/magnemite/anim_front.png | Bin 626 -> 574 bytes graphics/pokemon/magnemite/back.png | Bin 498 -> 481 bytes graphics/pokemon/magnemite/front.png | Bin 468 -> 417 bytes graphics/pokemon/magneton/back.png | Bin 753 -> 747 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/pokemon/magnemite/anim_front.png b/graphics/pokemon/magnemite/anim_front.png index e4355ee27611eb371eaf3a670c3deb93a55b51a6..7d3dc54ec6f428f97b5ecb52a5d33ef408d439db 100644 GIT binary patch delta 492 zcmV7%z9(d@mVA%zw%7etGv^2>1Up zR;kjjs>XMV>-)_{A>n;U(LyUbBlnbb-bR7(M7T4Qig4hDX9P?ef5-UY{u$>H1AWgs z#CV2~!GYFdjvg@@GQS(18bIp@?Df@#v2OTulmRi)!e8@|*9~>NOmKji5f$&~m-K6) zVMZ*$2l0EFzT$vgV(^%z>1PZxUtx$+4gi?-1pYY8HmBDN0p_xA0aP+lFx|EypI9Q(b5APf6H8e6E%QsN zHlL6^YCzh)R_zRr&)eyTr<_!Genv09esg48}H>jK0hR>%0+Z2kh2aGi4|& zxO3J_SrQAh6=`a0kpqM+3gv*9Fjir#*)_neS!Cw!8ldK$V#fnp$ACOwfUN_TKvtWf zi6{vG0pua4Z|i8ja0$aVWg;f!LCaV(mv{pc)w1PPkBVyJiTgNY*ei{Txx7OvaOSG* il|1o8xsBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks&^R010qNS#tmY z4#NNd4#NS*Z>VGd00GNML_t(o!|j%_PQx$|hK=JgTw?w-KDBvX!{BASfnU$4L-_mCIp&_Eqa}whh(mqwACGhbQ0$^()Ra;mUv^hl>m95jRzwEl`5R zlcsuTKZ7Ue5d{@~Q)xj%oWBl|EoBV;S&p#4N=gw%0&3!@6+{Yim~XMZq$k80UR-FgqZwwPw^% zNSa$SW=SN?>NC`N)EdeHh%MHlfdvp_4Y{^v+W@rYkQ;Ni4Ip#RLN z#6}b;F(3~)7C>GF6O*(x-@-8|4_exqIYXnG7n@fJi)!`J*glDcz0$b&Ej)1MDvhkA gp|?_{e=kD50A1U_nNFU2=l}o!07*qoM6N<$f_75vGXMYp diff --git a/graphics/pokemon/magnemite/back.png b/graphics/pokemon/magnemite/back.png index 2b96c2946db5365269c9d6e191092bdfeb104777..ec4214010338709582afbf933884a3dcf179f0ff 100644 GIT binary patch delta 455 zcmV;&0XY8h1K|UZB!4haOjJdf(4dHji2wi1(9qCONJtP65I8U}w6wHRN=n7Fl;+;7 zl#5cdw6s!6O0=}J==k^`THF=@00C@CL_t(YiS5y`O2beT2H*_64-j+{3SQ`ty0tz) z1D6gKOO>38NFl;a#%`JysJ5dNDqP2cLpLdQ>MIoAKv0mn-G68BBrz%Wp1L~Ne+ZYH zFF7YCmbJ|`e;Xm_+xfw*P@=G?rw3Lkom6TjI9|NS6zsdAN`TI*)|UyetGjlK0)|ipUSpPqVCNa= zYFgx=iAC&ky*>x5I)o6)&**l;5C{SWvLD@S7-H1?Xh7jt5BlpM>oMx;x*rSkr>0`o x#vx)s>?#(sR=b%9DhvRye~4=^H@VF}$QNJi!`}Vz;Ftga002ovPDHLkV1gP2*+u{W delta 472 zcmV;}0Vn?91M&lqB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP0000mP)t-sn9!hz zh=}<3_|VYMP)JA+5D+*pFtD(&P)JC?u#n)`sE~+Iu&}UDNJy}-u=x1MOoQME00009 za7bBm000id000id0mpBsWB>pGOG!jQR7l6|(J@bhP!I?3H-Gef01^`hzl9F2C3%)a z7ECydaS#)rbCZ_)8ZMYTmrf3y>R_i1d@2X(@H{|h(sy-ru>a}8{os!G#3`rzag^d8 z4~2Kdi4jh^LS8IxFUQOW5YrCKJcSI1NIbQ`!80f1fQPfBtsDoK9b_X4D)a|%eG(~& zL~PBM_rL;?rGLszwr2M>f7~+d(OAUFJ2yLBx;N(826qdfMJrQl4SHSM8_-`u6d1G8 zlvnd^1La~=8Kc{*Lk1`(t-23rz5KLh0Eyt|eVSndNg~+wK-VEBf_eakxeW=~Y5;2n zkQn-UnL)ycJxCEJ`7huFDTO8EeGjI{ivjr5q$$PW9#OELkV7LTN0uOvNl1OXKC(pV zW7wRWe+c>+<+K@3!oJi_Y+_oX5kjzH6UKfkxJUq?`8gd!E>8J(5#k$b62L!qQN9`g O0000L_t(YiS3fHPQx$|hFvK}V#881BQdg7O7>Q=2h=4& zJrG@hfpp;k`T#saGn}%*5VIjMgi1UCU3mw@z(6-7%*C*A?%E~)a>IT8{r{GQ=+tSe z>Z!fW`~76Fk%&HxPT9>)ap9-ws}T##=6dMw0N}l6H%imM#bC$-fAU1BOrX70<3Kzj z%*Qmy`b^wtTrXb3P@ zaLoZ)SIef2U^2nwM2wOcu`*{KU}ZAE#X8MophT<3i2)%4CA?%xUlK-Y9`x|;a2f{w gjDlBm>a=bB01XIjIiNO+O8@`>07*qoM6N<$f<3pK;s5{u delta 383 zcmV-_0f7FY1JnbMBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks&^R010qNS#tmY z4#NNd4#NS*Z>VGd00AvYL_t(Y$L)}@PQx$|hK*ELs#q{`U|}+1>A=JTklGn47FW$h zDlmkFS11nvFM!nHg2cpvSx^N-n^!0U124eJOW-7IoMG&eZ*VN#m%IPWT3XhO5dYNo z_20(eDAks%T;}zsGm7PZ7FF*~uaE0X1ayP$RV=;HLoEZt;X*{LSGZU{2MuX&`|e@* zN>1<*L4fKz4;AA4EoWSusjBW~l<>ZjC*suIl?5$S5l3?Q^r^nwBU;)Jk-Jywu%Lx% z32<|z)DqE>kHw)87KmUHpqg+uKd6P&n3!s^VX6!ZoS7sOdmq1Ag>8M}w?HpskgW(o znqgUD6~QNl+y+p%!Y#C3*?oCMGP#@Ev@I!b+ dOUqhe>>G`)T_(O{)L8%k002ovPDHLkV1hm!s#gF2 diff --git a/graphics/pokemon/magneton/back.png b/graphics/pokemon/magneton/back.png index a4638a1c11a9214bcb1b318f450122a795f76229..7a45ee78ddca83e9bc23ecc0b8ff22e3239b01ec 100644 GIT binary patch delta 667 zcmV;M0%ZO11?vTnB#}Woe*$(%L_t(YiPhCHiyA=`0N`C&(%9UJ@dzO#PK-e;LRix8 zZKe>6MTG6MLFUrggowSxK(z1(9R7+6hlQ}%Sy-HfVF|+S{D?FbY0S**%#J6!TBN!u zcRt>m_vVdi+5=qXiGAHV`%m!LdV3taLf&yusBVwu(7%>WeRLOTP1`V6l~ z(E6ECh5=@HLnH&;zU}Ae%u(ga{7_Ul}>_qq|iMmg!}DpxbvGY|=qv zMbF1UpU zH{JZCfFVH@c~E>i?|E@8c?j(Ulo9eomFL&rxbSCq7(kih7pvm3H>Mf-6BBi8&F7a8 zHYEU5^!iscYkvaDsM8de6wHNiKK`5h8>Re|X)S@G1?+#4`Z~EX0(T zSeyJ{`}B!0;R&#Sa{}i}dSDy!$<-~B%_=Agu%X}C)I@j@cTu-2^GpYzB0ywoEq>q# z2QhFh+LA&7$RLm7ilPw@@zQOVkq1C>3kx~7WXVIkciVui1cX?Eh)=fRaFApm^PwDU z66erpOF$(Fe?S^5IoJe?X)qvE`-Dy1QXE2!ivj_Q&z~RdNsxf10wWb+@BJC~f$ZuY zm?vPB3RI3MNd-uT2rK(wk$^96AQ$27J)o-4t2Pti)KH*!5ve}pKHC~>`nMG$xfFAU zOa(OlyJ!Ffes{OX+XFc$fylAm(T8#3@8{vHe002ovPDHLkV1nEj BI0OIy delta 670 zcmV;P0%85@1@Q%tBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks&^R010qNS#tmY z4#NNd4#NS*Z>VGd00K%$L_t(Y$JLdwj@m#FhHc`G<`&aMQR0D)BC(eu9X@9ZB*I%! ztQ2^bi%t|smOBcHb3x()$=-*E=&m8N>s{MN?4w9^(^%U1^w0dWvtYf&AUEgPNxCIPG=T~dkQ}1$r1Av*VarQeaL?8cH);m7zm;Pc0M6l$54Tnr^u1%4M0EQYk;kn$Jg73>I+LV$z8`U&W zgw|3uT=1*}K#pWk0bD0EOCYCsIIFK_qLl z*rKdq;YeUy35a=W7F%$=4Gv> Date: Fri, 23 Oct 2020 10:16:49 -0300 Subject: [PATCH 19/19] Fixed the animation of Deoxys' Attack, Defense and Speed forms --- src/data/pokemon_graphics/front_pic_anims.h | 47 +++++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 8e971c523e..51edda2778 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -8418,19 +8418,57 @@ static const union AnimCmd sAnim_ZYGARDE_COMPLETE_1[] = static const union AnimCmd sAnim_DEOXYS_ATTACK_1[] = { - ANIMCMD_FRAME(0, 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, 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, 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, }; @@ -13147,16 +13185,19 @@ static const union AnimCmd *const sAnims_ZYGARDE_COMPLETE[] ={ 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