Merge branch 'pokemon_expansion' into PR-CommentGen4Abilities

This commit is contained in:
Eduardo Quezada 2020-10-24 00:45:52 -03:00
commit 5489e55276
50 changed files with 831 additions and 13 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 B

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 B

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 753 B

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 763 B

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 897 B

After

Width:  |  Height:  |  Size: 849 B

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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[];

View File

@ -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);

View File

@ -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

View File

@ -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"

View File

@ -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();

View File

@ -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");

File diff suppressed because it is too large Load Diff

View File

@ -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}},

View File

@ -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,
};

View File

@ -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
};

View File

@ -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,
},
};

View File

@ -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),

View File

@ -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

View File

@ -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,
},
};

View File

@ -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),

View File

@ -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),

View File

@ -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),

View File

@ -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"),
};

View File

@ -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)
{

View File

@ -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;

View File

@ -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,

View File

@ -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())