Merge branch 'pokemon_expansion' into PR-CommentGen4Abilities
BIN
graphics/pokemon/deoxys/anim_front_attack.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
graphics/pokemon/deoxys/anim_front_defense.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
graphics/pokemon/deoxys/anim_front_speed.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
graphics/pokemon/deoxys/back_attack.png
Normal file
After Width: | Height: | Size: 774 B |
BIN
graphics/pokemon/deoxys/back_defense.png
Normal file
After Width: | Height: | Size: 678 B |
BIN
graphics/pokemon/deoxys/back_speed.png
Normal file
After Width: | Height: | Size: 746 B |
BIN
graphics/pokemon/deoxys/front_attack.png
Normal file
After Width: | Height: | Size: 967 B |
BIN
graphics/pokemon/deoxys/front_defense.png
Normal file
After Width: | Height: | Size: 848 B |
BIN
graphics/pokemon/deoxys/front_speed.png
Normal file
After Width: | Height: | Size: 951 B |
BIN
graphics/pokemon/deoxys/icon_attack.png
Normal file
After Width: | Height: | Size: 456 B |
BIN
graphics/pokemon/deoxys/icon_defense.png
Normal file
After Width: | Height: | Size: 414 B |
BIN
graphics/pokemon/deoxys/icon_speed.png
Normal file
After Width: | Height: | Size: 376 B |
19
graphics/pokemon/deoxys/normal_attack.pal
Normal 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
|
19
graphics/pokemon/deoxys/normal_defense.pal
Normal 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
|
19
graphics/pokemon/deoxys/normal_speed.pal
Normal 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
|
19
graphics/pokemon/deoxys/shiny_attack.pal
Normal 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
|
19
graphics/pokemon/deoxys/shiny_defense.pal
Normal 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
|
19
graphics/pokemon/deoxys/shiny_speed.pal
Normal 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
|
Before Width: | Height: | Size: 626 B After Width: | Height: | Size: 574 B |
Before Width: | Height: | Size: 498 B After Width: | Height: | Size: 481 B |
Before Width: | Height: | Size: 468 B After Width: | Height: | Size: 417 B |
Before Width: | Height: | Size: 753 B After Width: | Height: | Size: 747 B |
Before Width: | Height: | Size: 763 B After Width: | Height: | Size: 722 B |
Before Width: | Height: | Size: 897 B After Width: | Height: | Size: 849 B |
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
19
include/constants/pokemon_config.h
Normal 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
|
@ -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
|
||||
|
@ -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[];
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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();
|
||||
|
@ -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");
|
||||
|
@ -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}},
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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,
|
||||
},
|
||||
};
|
||||
|
@ -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),
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
},
|
||||
};
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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"),
|
||||
};
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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())
|
||||
|