diff --git a/asm/macros/event.inc b/asm/macros/event.inc index ae7193a2f..06c7bdaea 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -2006,3 +2006,15 @@ .macro totemboost_evas2 battler:req settotemboost \battler, 0, 0, 0, 0, 0, 0, 2 .endm + + @ Attempts to trigger a special evolution method in the overworld. + @ There may be other conditions required which are coded for in GetEvolutionTargetSpecies. + @ EX: tryspecialevo EVO_WATER_SCROLL, FALSE, FALSE triggers Kubfu's EVO_WATER_SCROLL evolution + @ method, cannot be cancelled in the evolution scene, and will only evolve one Kubfu if there + @ are multiple in the player's party. + .macro tryspecialevo evoMethod:req, canStopEvo=TRUE, tryMultiple=TRUE + setvar VAR_0x8000, \evoMethod + setvar VAR_0x8001, \canStopEvo + setvar VAR_0x8002, \tryMultiple + special TrySpecialOverworldEvo + .endm diff --git a/data/specials.inc b/data/specials.inc index 81ab09fe1..b4d0ecf90 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -536,3 +536,4 @@ gSpecials:: def_special CloseDeptStoreElevatorWindow def_special TrySetBattleTowerLinkType def_special SetTotemBoost + def_special TrySpecialOverworldEvo diff --git a/graphics/pokemon/calyrex/ice_rider/icon.png b/graphics/pokemon/calyrex/ice_rider/icon.png new file mode 100644 index 000000000..33a987920 Binary files /dev/null and b/graphics/pokemon/calyrex/ice_rider/icon.png differ diff --git a/graphics/pokemon/calyrex/shadow_rider/icon.png b/graphics/pokemon/calyrex/shadow_rider/icon.png new file mode 100644 index 000000000..e1747ccc6 Binary files /dev/null and b/graphics/pokemon/calyrex/shadow_rider/icon.png differ diff --git a/graphics/pokemon/castform/anim_front.png b/graphics/pokemon/castform/normal/anim_front.png similarity index 100% rename from graphics/pokemon/castform/anim_front.png rename to graphics/pokemon/castform/normal/anim_front.png diff --git a/graphics/pokemon/castform/back.png b/graphics/pokemon/castform/normal/back.png similarity index 100% rename from graphics/pokemon/castform/back.png rename to graphics/pokemon/castform/normal/back.png diff --git a/graphics/pokemon/castform/front.png b/graphics/pokemon/castform/normal/front.png similarity index 100% rename from graphics/pokemon/castform/front.png rename to graphics/pokemon/castform/normal/front.png diff --git a/graphics/pokemon/castform/normal.pal b/graphics/pokemon/castform/normal/normal.pal similarity index 100% rename from graphics/pokemon/castform/normal.pal rename to graphics/pokemon/castform/normal/normal.pal diff --git a/graphics/pokemon/castform/shiny.pal b/graphics/pokemon/castform/normal/shiny.pal similarity index 100% rename from graphics/pokemon/castform/shiny.pal rename to graphics/pokemon/castform/normal/shiny.pal diff --git a/graphics/pokemon/cherrim/anim_front.png b/graphics/pokemon/cherrim/anim_front.png deleted file mode 100644 index 8f6fb3d30..000000000 Binary files a/graphics/pokemon/cherrim/anim_front.png and /dev/null differ diff --git a/graphics/pokemon/cherrim/front.png b/graphics/pokemon/cherrim/normal/anim_front.png similarity index 100% rename from graphics/pokemon/cherrim/front.png rename to graphics/pokemon/cherrim/normal/anim_front.png diff --git a/graphics/pokemon/cherrim/back.png b/graphics/pokemon/cherrim/normal/back.png similarity index 100% rename from graphics/pokemon/cherrim/back.png rename to graphics/pokemon/cherrim/normal/back.png diff --git a/graphics/pokemon/cherrim/normal/front.png b/graphics/pokemon/cherrim/normal/front.png new file mode 100644 index 000000000..5b10c48d1 Binary files /dev/null and b/graphics/pokemon/cherrim/normal/front.png differ diff --git a/graphics/pokemon/cherrim/normal.pal b/graphics/pokemon/cherrim/normal/normal.pal similarity index 100% rename from graphics/pokemon/cherrim/normal.pal rename to graphics/pokemon/cherrim/normal/normal.pal diff --git a/graphics/pokemon/cherrim/shiny.pal b/graphics/pokemon/cherrim/normal/shiny.pal similarity index 100% rename from graphics/pokemon/cherrim/shiny.pal rename to graphics/pokemon/cherrim/normal/shiny.pal diff --git a/graphics/pokemon/cherrim/sunshine/anim_front.png b/graphics/pokemon/cherrim/sunshine/anim_front.png new file mode 100644 index 000000000..42c789389 Binary files /dev/null and b/graphics/pokemon/cherrim/sunshine/anim_front.png differ diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index db9a5b1fe..6087248df 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -25,7 +25,59 @@ STARTERGFXDIR := graphics/starter_choose types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark fairy contest_types := cool beauty cute smart tough +### Cherrim ### +$(CHERRIMGFXDIR)/front.4bpp: $(CHERRIMGFXDIR)/normal/front.4bpp \ + $(CHERRIMGFXDIR)/sunshine/front.4bpp + @cat $^ >$@ + +$(CHERRIMGFXDIR)/back.4bpp: $(CHERRIMGFXDIR)/normal/back.4bpp \ + $(CHERRIMGFXDIR)/sunshine/back.4bpp + @cat $^ >$@ + +$(CHERRIMGFXDIR)/anim_front.4bpp: $(CHERRIMGFXDIR)/normal/anim_front.4bpp \ + $(CHERRIMGFXDIR)/sunshine/anim_front.4bpp + @cat $^ >$@ + +$(CHERRIMGFXDIR)/normal.gbapal: $(CHERRIMGFXDIR)/normal/normal.gbapal \ + $(CHERRIMGFXDIR)/sunshine/normal.gbapal + @cat $^ >$@ + +$(CHERRIMGFXDIR)/shiny.gbapal: $(CHERRIMGFXDIR)/normal/shiny.gbapal \ + $(CHERRIMGFXDIR)/sunshine/shiny.gbapal + @cat $^ >$@ + +### Castform ### + +$(CASTFORMGFXDIR)/front.4bpp: $(CASTFORMGFXDIR)/normal/front.4bpp \ + $(CASTFORMGFXDIR)/sunny/front.4bpp \ + $(CASTFORMGFXDIR)/rainy/front.4bpp \ + $(CASTFORMGFXDIR)/snowy/front.4bpp + @cat $^ >$@ + +$(CASTFORMGFXDIR)/back.4bpp: $(CASTFORMGFXDIR)/normal/back.4bpp \ + $(CASTFORMGFXDIR)/sunny/back.4bpp \ + $(CASTFORMGFXDIR)/rainy/back.4bpp \ + $(CASTFORMGFXDIR)/snowy/back.4bpp + @cat $^ >$@ + +$(CASTFORMGFXDIR)/anim_front.4bpp: $(CASTFORMGFXDIR)/normal/anim_front.4bpp \ + $(CASTFORMGFXDIR)/sunny/anim_front.4bpp \ + $(CASTFORMGFXDIR)/rainy/anim_front.4bpp \ + $(CASTFORMGFXDIR)/snowy/anim_front.4bpp + @cat $^ >$@ + +$(CASTFORMGFXDIR)/normal.gbapal: $(CASTFORMGFXDIR)/normal/normal.gbapal \ + $(CASTFORMGFXDIR)/sunny/normal.gbapal \ + $(CASTFORMGFXDIR)/rainy/normal.gbapal \ + $(CASTFORMGFXDIR)/snowy/normal.gbapal + @cat $^ >$@ + +$(CASTFORMGFXDIR)/shiny.gbapal: $(CASTFORMGFXDIR)/normal/shiny.gbapal \ + $(CASTFORMGFXDIR)/sunny/shiny.gbapal \ + $(CASTFORMGFXDIR)/rainy/shiny.gbapal \ + $(CASTFORMGFXDIR)/snowy/shiny.gbapal + @cat $^ >$@ ### Tilesets ### diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index e1bd68547..a354e80cf 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -424,4 +424,14 @@ #define NUM_NORMAL_ABILITY_SLOTS 2 #define NUM_HIDDEN_ABILITY_SLOTS 1 +// Species Flags +#define FLAG_LEGENDARY (1 << 0) +#define FLAG_MYTHICAL (1 << 1) +#define FLAG_ULTRA_BEAST (1 << 2) +#define FLAG_ALOLAN_FORM (1 << 3) +#define FLAG_GALARIAN_FORM (1 << 4) +#define FLAG_GENDER_DIFFERENCE (1 << 5) + +#define LEGENDARY_PERFECT_IV_COUNT 3 + #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/constants/pokemon_config.h b/include/constants/pokemon_config.h index 257c06b7c..685f5df42 100644 --- a/include/constants/pokemon_config.h +++ b/include/constants/pokemon_config.h @@ -12,11 +12,14 @@ #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_TYPES GEN_8 // Since Gen 6, 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. #define P_UPDATED_ABILITIES GEN_8 // Since Gen 6, certain Pokémon have their abilities changed. Requires BATTLE_ENGINE for Gen4+ abilities. #define P_UPDATED_EGG_GROUPS GEN_8 // Since Gen 8, certain Pokémon have gained new egg groups. #define P_SHEDINJA_BALL GEN_8 // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. +#define P_LEGENDARY_PERFECT_IVS GEN_8 // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. +#define P_KADABRA_EVERSTONE GEN_8 // Since Gen 4, Kadabra can evolve even when holding an Everstone. +#define P_NIDORAN_M_DITTO_BREED GEN_8 // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. #define P_ENABLE_DEBUG TRUE // Enables a debug menu for pokemon sprites and icons, accessed by pressing SELECT in the summary screen. @@ -159,17 +162,214 @@ //FORM_ITEM_USE #define ITEM_GRACIDEA 10125 - // #define ITEM_REVEAL_GLASS 10126 - // #define ITEM_PRISON_BOTTLE 10127 + #define ITEM_REVEAL_GLASS 10126 + #define ITEM_PRISON_BOTTLE 10127 #define ITEM_RED_NECTAR 10128 #define ITEM_YELLOW_NECTAR 10129 #define ITEM_PINK_NECTAR 10130 #define ITEM_PURPLE_NECTAR 10131 + + // Held Items + #define ITEM_HONEY ITEM_NONE #endif // ITEM_EXPANSION #ifndef BATTLE_ENGINE - #define ABILITY_MULTITYPE ABILITY_NONE - #define ABILITY_RKS_SYSTEM ABILITY_NONE + // Gen 4 + #define ABILITY_TANGLED_FEET ABILITY_NONE + #define ABILITY_MOTOR_DRIVE ABILITY_NONE + #define ABILITY_RIVALRY ABILITY_NONE + #define ABILITY_STEADFAST ABILITY_NONE + #define ABILITY_SNOW_CLOAK ABILITY_NONE + #define ABILITY_GLUTTONY ABILITY_NONE + #define ABILITY_ANGER_POINT ABILITY_NONE + #define ABILITY_UNBURDEN ABILITY_NONE + #define ABILITY_HEATPROOF ABILITY_NONE + #define ABILITY_SIMPLE ABILITY_NONE + #define ABILITY_DRY_SKIN ABILITY_NONE + #define ABILITY_DOWNLOAD ABILITY_NONE + #define ABILITY_IRON_FIST ABILITY_NONE + #define ABILITY_POISON_HEAL ABILITY_NONE + #define ABILITY_ADAPTABILITY ABILITY_NONE + #define ABILITY_SKILL_LINK ABILITY_NONE + #define ABILITY_HYDRATION ABILITY_NONE + #define ABILITY_SOLAR_POWER ABILITY_NONE + #define ABILITY_QUICK_FEET ABILITY_NONE + #define ABILITY_NORMALIZE ABILITY_NONE + #define ABILITY_SNIPER ABILITY_NONE + #define ABILITY_MAGIC_GUARD ABILITY_NONE + #define ABILITY_NO_GUARD ABILITY_NONE + #define ABILITY_STALL ABILITY_NONE + #define ABILITY_TECHNICIAN ABILITY_NONE + #define ABILITY_LEAF_GUARD ABILITY_NONE + #define ABILITY_KLUTZ ABILITY_NONE + #define ABILITY_MOLD_BREAKER ABILITY_NONE + #define ABILITY_SUPER_LUCK ABILITY_NONE + #define ABILITY_AFTERMATH ABILITY_NONE + #define ABILITY_ANTICIPATION ABILITY_NONE + #define ABILITY_FOREWARN ABILITY_NONE + #define ABILITY_UNAWARE ABILITY_NONE + #define ABILITY_TINTED_LENS ABILITY_NONE + #define ABILITY_FILTER ABILITY_NONE + #define ABILITY_SLOW_START ABILITY_NONE + #define ABILITY_SCRAPPY ABILITY_NONE + #define ABILITY_STORM_DRAIN ABILITY_NONE + #define ABILITY_ICE_BODY ABILITY_NONE + #define ABILITY_SOLID_ROCK ABILITY_NONE + #define ABILITY_SNOW_WARNING ABILITY_NONE + #define ABILITY_HONEY_GATHER ABILITY_NONE + #define ABILITY_FRISK ABILITY_NONE + #define ABILITY_RECKLESS ABILITY_NONE + #define ABILITY_MULTITYPE ABILITY_NONE + #define ABILITY_FLOWER_GIFT ABILITY_NONE + #define ABILITY_BAD_DREAMS ABILITY_NONE + // Gen 5 + #define ABILITY_PICKPOCKET ABILITY_NONE + #define ABILITY_SHEER_FORCE ABILITY_NONE + #define ABILITY_CONTRARY ABILITY_NONE + #define ABILITY_UNNERVE ABILITY_NONE + #define ABILITY_DEFIANT ABILITY_NONE + #define ABILITY_DEFEATIST ABILITY_NONE + #define ABILITY_CURSED_BODY ABILITY_NONE + #define ABILITY_HEALER ABILITY_NONE + #define ABILITY_FRIEND_GUARD ABILITY_NONE + #define ABILITY_WEAK_ARMOR ABILITY_NONE + #define ABILITY_HEAVY_METAL ABILITY_NONE + #define ABILITY_LIGHT_METAL ABILITY_NONE + #define ABILITY_MULTISCALE ABILITY_NONE + #define ABILITY_TOXIC_BOOST ABILITY_NONE + #define ABILITY_FLARE_BOOST ABILITY_NONE + #define ABILITY_HARVEST ABILITY_NONE + #define ABILITY_TELEPATHY ABILITY_NONE + #define ABILITY_MOODY ABILITY_NONE + #define ABILITY_OVERCOAT ABILITY_NONE + #define ABILITY_POISON_TOUCH ABILITY_NONE + #define ABILITY_REGENERATOR ABILITY_NONE + #define ABILITY_BIG_PECKS ABILITY_NONE + #define ABILITY_SAND_RUSH ABILITY_NONE + #define ABILITY_WONDER_SKIN ABILITY_NONE + #define ABILITY_ANALYTIC ABILITY_NONE + #define ABILITY_ILLUSION ABILITY_NONE + #define ABILITY_IMPOSTER ABILITY_NONE + #define ABILITY_INFILTRATOR ABILITY_NONE + #define ABILITY_MUMMY ABILITY_NONE + #define ABILITY_MOXIE ABILITY_NONE + #define ABILITY_JUSTIFIED ABILITY_NONE + #define ABILITY_RATTLED ABILITY_NONE + #define ABILITY_MAGIC_BOUNCE ABILITY_NONE + #define ABILITY_SAP_SIPPER ABILITY_NONE + #define ABILITY_PRANKSTER ABILITY_NONE + #define ABILITY_SAND_FORCE ABILITY_NONE + #define ABILITY_IRON_BARBS ABILITY_NONE + #define ABILITY_ZEN_MODE ABILITY_NONE + #define ABILITY_VICTORY_STAR ABILITY_NONE + #define ABILITY_TURBOBLAZE ABILITY_NONE + #define ABILITY_TERAVOLT ABILITY_NONE + // Gen 6 + #define ABILITY_AROMA_VEIL ABILITY_NONE + #define ABILITY_FLOWER_VEIL ABILITY_NONE + #define ABILITY_CHEEK_POUCH ABILITY_NONE + #define ABILITY_PROTEAN ABILITY_NONE + #define ABILITY_FUR_COAT ABILITY_NONE + #define ABILITY_MAGICIAN ABILITY_NONE + #define ABILITY_BULLETPROOF ABILITY_NONE + #define ABILITY_COMPETITIVE ABILITY_NONE + #define ABILITY_STRONG_JAW ABILITY_NONE + #define ABILITY_REFRIGERATE ABILITY_NONE + #define ABILITY_SWEET_VEIL ABILITY_NONE + #define ABILITY_STANCE_CHANGE ABILITY_NONE + #define ABILITY_GALE_WINGS ABILITY_NONE + #define ABILITY_MEGA_LAUNCHER ABILITY_NONE + #define ABILITY_GRASS_PELT ABILITY_NONE + #define ABILITY_SYMBIOSIS ABILITY_NONE + #define ABILITY_TOUGH_CLAWS ABILITY_NONE + #define ABILITY_PIXILATE ABILITY_NONE + #define ABILITY_GOOEY ABILITY_NONE + #define ABILITY_AERILATE ABILITY_NONE + #define ABILITY_PARENTAL_BOND ABILITY_NONE + #define ABILITY_DARK_AURA ABILITY_NONE + #define ABILITY_FAIRY_AURA ABILITY_NONE + #define ABILITY_AURA_BREAK ABILITY_NONE + #define ABILITY_PRIMORDIAL_SEA ABILITY_NONE + #define ABILITY_DESOLATE_LAND ABILITY_NONE + #define ABILITY_DELTA_STREAM ABILITY_NONE + // Gen 7 + #define ABILITY_STAMINA ABILITY_NONE + #define ABILITY_WIMP_OUT ABILITY_NONE + #define ABILITY_EMERGENCY_EXIT ABILITY_NONE + #define ABILITY_WATER_COMPACTION ABILITY_NONE + #define ABILITY_MERCILESS ABILITY_NONE + #define ABILITY_SHIELDS_DOWN ABILITY_NONE + #define ABILITY_STAKEOUT ABILITY_NONE + #define ABILITY_WATER_BUBBLE ABILITY_NONE + #define ABILITY_STEELWORKER ABILITY_NONE + #define ABILITY_BERSERK ABILITY_NONE + #define ABILITY_SLUSH_RUSH ABILITY_NONE + #define ABILITY_LONG_REACH ABILITY_NONE + #define ABILITY_LIQUID_VOICE ABILITY_NONE + #define ABILITY_TRIAGE ABILITY_NONE + #define ABILITY_GALVANIZE ABILITY_NONE + #define ABILITY_SURGE_SURFER ABILITY_NONE + #define ABILITY_SCHOOLING ABILITY_NONE + #define ABILITY_DISGUISE ABILITY_NONE + #define ABILITY_BATTLE_BOND ABILITY_NONE + #define ABILITY_POWER_CONSTRUCT ABILITY_NONE + #define ABILITY_CORROSION ABILITY_NONE + #define ABILITY_COMATOSE ABILITY_NONE + #define ABILITY_QUEENLY_MAJESTY ABILITY_NONE + #define ABILITY_INNARDS_OUT ABILITY_NONE + #define ABILITY_DANCER ABILITY_NONE + #define ABILITY_BATTERY ABILITY_NONE + #define ABILITY_FLUFFY ABILITY_NONE + #define ABILITY_DAZZLING ABILITY_NONE + #define ABILITY_SOUL_HEART ABILITY_NONE + #define ABILITY_TANGLING_HAIR ABILITY_NONE + #define ABILITY_RECEIVER ABILITY_NONE + #define ABILITY_POWER_OF_ALCHEMY ABILITY_NONE + #define ABILITY_BEAST_BOOST ABILITY_NONE + #define ABILITY_RKS_SYSTEM ABILITY_NONE + #define ABILITY_ELECTRIC_SURGE ABILITY_NONE + #define ABILITY_PSYCHIC_SURGE ABILITY_NONE + #define ABILITY_MISTY_SURGE ABILITY_NONE + #define ABILITY_GRASSY_SURGE ABILITY_NONE + #define ABILITY_FULL_METAL_BODY ABILITY_NONE + #define ABILITY_SHADOW_SHIELD ABILITY_NONE + #define ABILITY_PRISM_ARMOR ABILITY_NONE + #define ABILITY_NEUROFORCE ABILITY_NONE + // Gen 8 + #define ABILITY_INTREPID_SWORD ABILITY_NONE + #define ABILITY_DAUNTLESS_SHIELD ABILITY_NONE + #define ABILITY_LIBERO ABILITY_NONE + #define ABILITY_BALL_FETCH ABILITY_NONE + #define ABILITY_COTTON_DOWN ABILITY_NONE + #define ABILITY_PROPELLER_TAIL ABILITY_NONE + #define ABILITY_MIRROR_ARMOR ABILITY_NONE + #define ABILITY_GULP_MISSILE ABILITY_NONE + #define ABILITY_STALWART ABILITY_NONE + #define ABILITY_STEAM_ENGINE ABILITY_NONE + #define ABILITY_PUNK_ROCK ABILITY_NONE + #define ABILITY_SAND_SPIT ABILITY_NONE + #define ABILITY_ICE_SCALES ABILITY_NONE + #define ABILITY_RIPEN ABILITY_NONE + #define ABILITY_ICE_FACE ABILITY_NONE + #define ABILITY_POWER_SPOT ABILITY_NONE + #define ABILITY_MIMICRY ABILITY_NONE + #define ABILITY_SCREEN_CLEANER ABILITY_NONE + #define ABILITY_STEELY_SPIRIT ABILITY_NONE + #define ABILITY_PERISH_BODY ABILITY_NONE + #define ABILITY_WANDERING_SPIRIT ABILITY_NONE + #define ABILITY_GORILLA_TACTICS ABILITY_NONE + #define ABILITY_NEUTRALIZING_GAS ABILITY_NONE + #define ABILITY_PASTEL_VEIL ABILITY_NONE + #define ABILITY_HUNGER_SWITCH ABILITY_NONE + #define ABILITY_QUICK_DRAW ABILITY_NONE + #define ABILITY_UNSEEN_FIST ABILITY_NONE + #define ABILITY_CURIOUS_MEDICINE ABILITY_NONE + #define ABILITY_TRANSISTOR ABILITY_NONE + #define ABILITY_DRAGONS_MAW ABILITY_NONE + #define ABILITY_CHILLING_NEIGH ABILITY_NONE + #define ABILITY_GRIM_NEIGH ABILITY_NONE + #define ABILITY_AS_ONE_ICE_RIDER ABILITY_NONE + #define ABILITY_AS_ONE_SHADOW_RIDER ABILITY_NONE #endif // BATTLE_ENGINE #endif // GUARD_CONSTANTS_POKEMON_CONFIG_H diff --git a/include/constants/species.h b/include/constants/species.h index 68b6a14a2..b8689a32a 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1344,12 +1344,4 @@ #define SPECIES_EGG SPECIES_CALYREX_SHADOW_RIDER + 1 #define NUM_SPECIES SPECIES_EGG -// Species Flags -#define FLAG_LEGENDARY (1 << 0) -#define FLAG_MYTHICAL (1 << 1) -#define FLAG_ULTRA_BEAST (1 << 2) -#define FLAG_ALOLAN_FORM (1 << 3) -#define FLAG_GALARIAN_FORM (1 << 4) -#define FLAG_GENDER_DIFFERENCE (1 << 5) - #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/graphics.h b/include/graphics.h index 21879c724..907568c2b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -5856,8 +5856,8 @@ extern const u8 gMonIcon_ZacianCrownedSword[]; extern const u8 gMonIcon_ZamazentaCrownedShield[]; extern const u8 gMonIcon_EternatusEternamax[]; extern const u8 gMonIcon_ZarudeDada[]; -//extern const u8 gMonIcon_CalyrexIceRider[]; -//extern const u8 gMonIcon_CalyrexShadowRider[]; +extern const u8 gMonIcon_CalyrexIceRider[]; +extern const u8 gMonIcon_CalyrexShadowRider[]; extern const u8 gMonIcon_Egg[]; extern const u8 gMonFootprint_QuestionMark[]; diff --git a/include/pokemon.h b/include/pokemon.h index 0ee069a41..578ca42a2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -393,7 +393,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 tradePartnerSpecies); +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem, struct Pokemon *tradePartner); 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 c3fc16678..383f5efc0 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -5200,8 +5200,7 @@ static void TrySpecialEvolution(void) // Attempts to perform non-level related b #ifndef POKEMON_EXPANSION u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i); #else - //Temp - u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i, 0); + u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i, NULL); #endif if (species != SPECIES_NONE && !(sTriedEvolving & gBitTable[i])) { @@ -5232,7 +5231,7 @@ static void TryEvolvePokemon(void) levelUpBits &= ~(gBitTable[i]); gLeveledUpInBattle = levelUpBits; - species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, levelUpBits, SPECIES_NONE); + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, levelUpBits, NULL); if (species != SPECIES_NONE) { FreeAllWindowBuffers(); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 4db994c0d..05332ea45 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -5788,8 +5788,8 @@ const u8 gMonIcon_ZacianCrownedSword[] = INCBIN_U8("graphics/pokemon/zacian/crow const u8 gMonIcon_ZamazentaCrownedShield[] = INCBIN_U8("graphics/pokemon/zamazenta/crowned_shield/icon.4bpp"); const u8 gMonIcon_EternatusEternamax[] = INCBIN_U8("graphics/pokemon/eternatus/eternamax/icon.4bpp"); const u8 gMonIcon_ZarudeDada[] = INCBIN_U8("graphics/pokemon/zarude/dada/icon.4bpp"); -//const u8 gMonIcon_CalyrexIceRider[] = INCBIN_U8("graphics/pokemon/calyrex/ice_rider/icon.4bpp"); -//const u8 gMonIcon_CalyrexShadowRider[] = INCBIN_U8("graphics/pokemon/calyrex/shadow_rider/icon.4bpp"); +const u8 gMonIcon_CalyrexIceRider[] = INCBIN_U8("graphics/pokemon/calyrex/ice_rider/icon.4bpp"); +const u8 gMonIcon_CalyrexShadowRider[] = INCBIN_U8("graphics/pokemon/calyrex/shadow_rider/icon.4bpp"); const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/footprint.1bpp"); diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index 5fe8d69b9..bf15638f2 100644 --- a/src/data/pokemon/evolution.h +++ b/src/data/pokemon/evolution.h @@ -467,15 +467,15 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_YAMPER] = {{EVO_LEVEL, 25, SPECIES_BOLTUND}}, [SPECIES_ROLYCOLY] = {{EVO_LEVEL, 18, SPECIES_CARKOL}}, [SPECIES_CARKOL] = {{EVO_LEVEL, 34, SPECIES_COALOSSAL}}, - [SPECIES_APPLIN] = {{EVO_ITEM, ITEM_NONE, SPECIES_FLAPPLE}, - {EVO_ITEM, ITEM_NONE, SPECIES_APPLETUN}}, + [SPECIES_APPLIN] = {{EVO_ITEM, ITEM_TART_APPLE, SPECIES_FLAPPLE}, + {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}}, [SPECIES_SILICOBRA] = {{EVO_LEVEL, 36, SPECIES_SANDACONDA}}, [SPECIES_ARROKUDA] = {{EVO_LEVEL, 26, SPECIES_BARRASKEWDA}}, [SPECIES_TOXEL] = {{EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY}, {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}}, [SPECIES_SIZZLIPEDE] = {{EVO_LEVEL, 28, SPECIES_CENTISKORCH}}, [SPECIES_CLOBBOPUS] = {{EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}}, - [SPECIES_SINISTEA] = {{EVO_ITEM, ITEM_NONE, SPECIES_POLTEAGEIST}}, + [SPECIES_SINISTEA] = {{EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST}}, [SPECIES_HATENNA] = {{EVO_LEVEL, 32, SPECIES_HATTREM}}, [SPECIES_HATTREM] = {{EVO_LEVEL, 42, SPECIES_HATTERENE}}, [SPECIES_IMPIDIMP] = {{EVO_LEVEL, 32, SPECIES_MORGREM}}, @@ -493,8 +493,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_CUFANT] = {{EVO_LEVEL, 34, SPECIES_COPPERAJAH}}, [SPECIES_DREEPY] = {{EVO_LEVEL, 50, SPECIES_DRAKLOAK}}, [SPECIES_DRAKLOAK] = {{EVO_LEVEL, 60, SPECIES_DRAGAPULT}}, - [SPECIES_KUBFU] = {{EVO_LEVEL, 0, SPECIES_URSHIFU}, - {EVO_LEVEL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}}, + [SPECIES_KUBFU] = {{EVO_DARK_SCROLL, 0, SPECIES_URSHIFU}, + {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}}, [SPECIES_RATTATA_ALOLAN] = {{EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}}, [SPECIES_SANDSHREW_ALOLAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}}, [SPECIES_VULPIX_ALOLAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}}, @@ -505,15 +505,15 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_GRIMER_ALOLAN] = {{EVO_LEVEL, 38, SPECIES_MUK_ALOLAN}}, [SPECIES_MEOWTH_GALARIAN] = {{EVO_LEVEL, 28, SPECIES_PERRSERKER}}, [SPECIES_PONYTA_GALARIAN] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH_GALARIAN}}, - [SPECIES_SLOWPOKE_GALARIAN] = {{EVO_ITEM, ITEM_NONE, SPECIES_SLOWBRO_GALARIAN}, - {EVO_ITEM, ITEM_NONE, SPECIES_SLOWKING_GALARIAN}}, - [SPECIES_FARFETCHD_GALARIAN] = {{EVO_LEVEL, 0, SPECIES_SIRFETCHD}}, + [SPECIES_SLOWPOKE_GALARIAN] = {{EVO_ITEM, ITEM_GALARICA_CUFF, SPECIES_SLOWBRO_GALARIAN}, + {EVO_ITEM, ITEM_GALARICA_WREATH, SPECIES_SLOWKING_GALARIAN}}, + [SPECIES_FARFETCHD_GALARIAN] = {{EVO_CRITICAL_HITS, 3, SPECIES_SIRFETCHD}}, [SPECIES_MR_MIME_GALARIAN] = {{EVO_LEVEL, 42, SPECIES_MR_RIME}}, [SPECIES_CORSOLA_GALARIAN] = {{EVO_LEVEL, 38, SPECIES_CURSOLA}}, [SPECIES_ZIGZAGOON_GALARIAN] = {{EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}}, [SPECIES_LINOONE_GALARIAN] = {{EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}}, [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN}}, - [SPECIES_YAMASK_GALARIAN] = {{EVO_LEVEL, 0, SPECIES_RUNERIGUS}}, + [SPECIES_YAMASK_GALARIAN] = {{EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}}, [SPECIES_BURMY_SANDY_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}}, [SPECIES_BURMY_TRASH_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH_CLOAK}, @@ -534,5 +534,5 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_PUMPKABOO_LARGE] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_LARGE}}, [SPECIES_PUMPKABOO_SUPER] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_SUPER}}, [SPECIES_ROCKRUFF_OWN_TEMPO] = {{EVO_LEVEL_DUSK, 25, SPECIES_LYCANROC_DUSK}}, - [SPECIES_SINISTEA_ANTIQUE] = {{EVO_ITEM, ITEM_NONE, SPECIES_POLTEAGEIST_ANTIQUE}}, + [SPECIES_SINISTEA_ANTIQUE] = {{EVO_ITEM, ITEM_CHIPPED_POT, SPECIES_POLTEAGEIST_ANTIQUE}}, }; diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 39fcc7aee..d40d332ab 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -3,7 +3,7 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_GIRATINA] = sGiratinaFormChangeTable, [SPECIES_GIRATINA_ORIGIN] = sGiratinaFormChangeTable, [SPECIES_SHAYMIN] = sShayminFormChangeTable, - [SPECIES_SHAYMIN_SKY] = sShayminSkyFormChangeTable, + [SPECIES_SHAYMIN_SKY] = sShayminFormChangeTable, [SPECIES_ARCEUS] = sArceusFormChangeTable, [SPECIES_ARCEUS_FIGHTING] = sArceusFormChangeTable, [SPECIES_ARCEUS_FLYING] = sArceusFormChangeTable, diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index f980f14b8..c224a1a02 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,4 +1,8 @@ /* +For cycling between forms with the same method and parameters but different target species (eg. Tornadus using the +Reveal Glass to change between its two forms), a separate form change table is required for each form. +Otherwise, only the last form change on the table will trigger. + FORM_ITEM_HOLD: Form change activates when the item is given to or taken from the selected Pokémon. param1 = item to hold @@ -47,10 +51,6 @@ static const struct FormChange sGiratinaFormChangeTable[] = { static const struct FormChange sShayminFormChangeTable[] = { {FORM_ITEM_USE_TIME, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, - {FORM_CHANGE_END}, -}; - -static const struct FormChange sShayminSkyFormChangeTable[] = { {FORM_WITHDRAW, SPECIES_SHAYMIN}, {FORM_CHANGE_END}, }; @@ -95,32 +95,32 @@ static const struct FormChange sArceusFormChangeTable[] = { }; static const struct FormChange sTornadusFormChangeTable[] = { - // {FORM_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; static const struct FormChange sTornadusTherianFormChangeTable[] = { - // {FORM_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, + {FORM_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; static const struct FormChange sThundurusFormChangeTable[] = { - // {FORM_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; static const struct FormChange sThundurusTherianFormChangeTable[] = { - // {FORM_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, + {FORM_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; static const struct FormChange sLandorusFormChangeTable[] = { - // {FORM_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; static const struct FormChange sLandorusTherianFormChangeTable[] = { - // {FORM_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, + {FORM_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; diff --git a/src/data/pokemon/pokedex_orders.h b/src/data/pokemon/pokedex_orders.h index 68b09bf9e..f51bdeb44 100644 --- a/src/data/pokemon/pokedex_orders.h +++ b/src/data/pokemon/pokedex_orders.h @@ -927,6 +927,7 @@ const u16 gPokedexOrder_Alphabetical[] = const u16 gPokedexOrder_Weight[] = { + // 0.0 - 21.8 lbs / 0.0 - 9.9 kg NATIONAL_DEX_GASTLY, NATIONAL_DEX_HAUNTER, NATIONAL_DEX_FLABEBE, @@ -1195,7 +1196,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_VULPIX, //NATIONAL_DEX_VULPIX, // Alolan Form NATIONAL_DEX_TEPIG, - + // 22.0 - 44.1 lbs / 10.0 - 20.0 kg NATIONAL_DEX_KAKUNA, NATIONAL_DEX_MAGIKARP, NATIONAL_DEX_SILCOON, @@ -1339,7 +1340,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_GEODUDE, NATIONAL_DEX_BIDOOF, NATIONAL_DEX_MIENFOO, - + // 44.3 - 54.9 lbs / 20.1 - 24.9 kg NATIONAL_DEX_REUNICLUS, NATIONAL_DEX_KIRLIA, NATIONAL_DEX_RIOLU, @@ -1392,7 +1393,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_DEWOTT, NATIONAL_DEX_TALONFLAME, NATIONAL_DEX_STARAPTOR, - + // 55.1 - 110.0 lbs / 25.0 - 49.9 kg NATIONAL_DEX_SEADRA, NATIONAL_DEX_FLAREON, NATIONAL_DEX_CROCONAW, @@ -1592,7 +1593,7 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_HOUNDOOM, // Mega NATIONAL_DEX_HIPPOPOTAS, NATIONAL_DEX_HITMONLEE, - + // 110.2 - 132.1 lbs / 50.0 - 59.9 kg NATIONAL_DEX_ZWEILOUS, NATIONAL_DEX_DRAGAPULT, NATIONAL_DEX_HITMONCHAN, @@ -1649,7 +1650,7 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_PINSIR, // Mega NATIONAL_DEX_AERODACTYL, NATIONAL_DEX_SHIFTRY, - + // 132.3 - 218.0 lbs / 60.0 - 98.9 kg NATIONAL_DEX_NIDOQUEEN, NATIONAL_DEX_MAGNETON, NATIONAL_DEX_KINGLER, @@ -1767,9 +1768,9 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_NOSEPASS, NATIONAL_DEX_GROTLE, //NATIONAL_DEX_MAROWAK, // Alolan Form, Totem-sized - + // 218.3 - 220.2 lbs / 99.0 - 99.9 kg NATIONAL_DEX_BERGMITE, - + // 220.5 - 225.5 lbs / 100.0 - 102.3 kg NATIONAL_DEX_VENUSAUR, //NATIONAL_DEX_KANGASKHAN, // Mega NATIONAL_DEX_TROPIUS, @@ -1781,7 +1782,7 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_BLASTOISE, // Mega //NATIONAL_DEX_SWAMPERT, // Mega NATIONAL_DEX_BOLDORE, - + // 225.8 - 330.5 lbs / 102.4 - 149.9 kg NATIONAL_DEX_RAMPARDOS, NATIONAL_DEX_SALAMENCE, NATIONAL_DEX_GRAVELER, @@ -1838,7 +1839,7 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_VIKAVOLT, // Totem-sized NATIONAL_DEX_CRYOGONAL, NATIONAL_DEX_BASTIODON, - + // 330.7 - 440.7 lbs / 150.0 - 199.9 kg NATIONAL_DEX_EMBOAR, NATIONAL_DEX_NAGANADEL, NATIONAL_DEX_ARCTOZOLT, @@ -1866,7 +1867,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_VOLCANION, NATIONAL_DEX_ENTEI, NATIONAL_DEX_HO_OH, - + // 440.9 - 451.3 lbs / 200.0 - 204.7 kg NATIONAL_DEX_CRUSTLE, NATIONAL_DEX_VIRIZION, NATIONAL_DEX_REGIDRAGO, @@ -1874,11 +1875,10 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_TYRANITAR, NATIONAL_DEX_METANG, NATIONAL_DEX_YVELTAL, - + // 451.5 - 661.2 lbs / 204.8 - 299.9 kg NATIONAL_DEX_REGISTEEL, NATIONAL_DEX_RAYQUAZA, //NATIONAL_DEX_KOMMO_O, // Totem-sized - NATIONAL_DEX_ONIX, NATIONAL_DEX_DRAGONITE, NATIONAL_DEX_DHELMISE, @@ -1906,15 +1906,14 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_BEARTIC, NATIONAL_DEX_TERRAKION, NATIONAL_DEX_TYRANTRUM, - NATIONAL_DEX_RHYPERIOR, NATIONAL_DEX_MAMOSWINE, - + // 661.4 - 667.0 lbs / 300.0 - 307.1 kg NATIONAL_DEX_GOLEM, NATIONAL_DEX_HIPPOWDON, //NATIONAL_DEX_GYARADOS, // Mega NATIONAL_DEX_ZYGARDE, // 50% Forme - + // 677.3 - 667.0 lbs / 307.2 - 359.9 kg NATIONAL_DEX_TORTERRA, NATIONAL_DEX_COALOSSAL, //NATIONAL_DEX_GOLEM, // Alolan Form @@ -1931,13 +1930,13 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_GLALIE, // Mega NATIONAL_DEX_KYOGRE, //NATIONAL_DEX_ZACIAN, // Crowned Sword - + // 793.7 - 902.8 lbs / 360.0 - 409.5 kg NATIONAL_DEX_AGGRON, //NATIONAL_DEX_RAYQUAZA, // Mega //NATIONAL_DEX_AGGRON, // Mega NATIONAL_DEX_WAILORD, NATIONAL_DEX_STEELIX, - + // 903.0 - 2204.4 lbs / 409.6 - 999.9 kg //NATIONAL_DEX_EXEGGUTOR, // Alolan Form NATIONAL_DEX_REGIGIGAS, //NATIONAL_DEX_KYOGRE, // Primal @@ -1970,12 +1969,14 @@ const u16 gPokedexOrder_Weight[] = const u16 gPokedexOrder_Height[] = { + // 0'04" / 0.1m NATIONAL_DEX_JOLTIK, NATIONAL_DEX_FLABEBE, NATIONAL_DEX_CUTIEFLY, NATIONAL_DEX_COMFEY, NATIONAL_DEX_COSMOEM, NATIONAL_DEX_SINISTEA, + // 0'08" / 0.2m NATIONAL_DEX_DIGLETT, //NATIONAL_DEX_DIGLETT, // Alolan Form NATIONAL_DEX_NATU, @@ -2000,7 +2001,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_APPLIN, NATIONAL_DEX_POLTEAGEIST, NATIONAL_DEX_MILCERY, - + // 1'00" / 0.3m NATIONAL_DEX_CATERPIE, NATIONAL_DEX_WEEDLE, NATIONAL_DEX_PIDGEY, @@ -2147,7 +2148,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_TOXEL, NATIONAL_DEX_HATENNA, NATIONAL_DEX_IMPIDIMP, - + // 1'08" / 0.5m NATIONAL_DEX_SQUIRTLE, NATIONAL_DEX_NIDORAN_M, NATIONAL_DEX_JIGGLYPUFF, @@ -2217,7 +2218,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ELDEGOSS, NATIONAL_DEX_ARROKUDA, NATIONAL_DEX_DREEPY, - + // 2'00" / 0.6m NATIONAL_DEX_CHARMANDER, NATIONAL_DEX_KAKUNA, NATIONAL_DEX_SANDSHREW, @@ -2303,7 +2304,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CLOBBOPUS, NATIONAL_DEX_HATTREM, NATIONAL_DEX_KUBFU, - + // 2'04" / 0.7m NATIONAL_DEX_BULBASAUR, NATIONAL_DEX_METAPOD, NATIONAL_DEX_RATICATE, @@ -2355,7 +2356,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_THWACKEY, NATIONAL_DEX_DRIZZILE, NATIONAL_DEX_SIZZLIPEDE, - + // 2'07" / 0.8m NATIONAL_DEX_RAICHU, NATIONAL_DEX_NIDORINA, NATIONAL_DEX_ZUBAT, @@ -2409,6 +2410,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MORGREM, NATIONAL_DEX_PERRSERKER, NATIONAL_DEX_SIRFETCHD, + // 2'11" / 0.9m NATIONAL_DEX_NIDORINO, NATIONAL_DEX_ABRA, NATIONAL_DEX_TENTACOOL, @@ -2445,7 +2447,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_LURANTIS, NATIONAL_DEX_BRUXISH, NATIONAL_DEX_INDEEDEE, - + // 3'03" / 1.0m NATIONAL_DEX_IVYSAUR, NATIONAL_DEX_WARTORTLE, NATIONAL_DEX_BEEDRILL, @@ -2516,6 +2518,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_DREDNAW, NATIONAL_DEX_BOLTUND, NATIONAL_DEX_CURSOLA, + // 3'07" / 1.1m NATIONAL_DEX_CHARMELEON, NATIONAL_DEX_BUTTERFREE, NATIONAL_DEX_PIDGEOTTO, @@ -2560,6 +2563,7 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_LYCANROC, // Midnight Form NATIONAL_DEX_CARKOL, NATIONAL_DEX_CALYREX, + // 3'11" / 1.2m NATIONAL_DEX_FEAROW, //NATIONAL_DEX_SANDSLASH, // Alolan Form NATIONAL_DEX_VILEPLUME, @@ -2619,7 +2623,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_THIEVUL, NATIONAL_DEX_CUFANT, NATIONAL_DEX_REGIELEKI, - + // 4'03" / 1.3m NATIONAL_DEX_NIDOQUEEN, NATIONAL_DEX_CLEFABLE, NATIONAL_DEX_POLIWRATH, @@ -2656,6 +2660,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_DUBWOOL, NATIONAL_DEX_BARRASKEWDA, NATIONAL_DEX_FROSMOTH, + // 4'07" / 1.4m //NATIONAL_DEX_BEEDRILL, // Mega //NATIONAL_DEX_RATICATE, // Alolan Form, Totem-sized NATIONAL_DEX_NIDOKING, @@ -2695,6 +2700,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CINDERACE, NATIONAL_DEX_EISCUE, NATIONAL_DEX_DRAKLOAK, + // 4'11" / 1.5m NATIONAL_DEX_PIDGEOT, NATIONAL_DEX_VENOMOTH, NATIONAL_DEX_ALAKAZAM, @@ -2747,7 +2753,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ZERAORA, NATIONAL_DEX_GRIMMSNARL, NATIONAL_DEX_MR_RIME, - + // 5'03" / 1.6m NATIONAL_DEX_BLASTOISE, //NATIONAL_DEX_BLASTOISE, // Mega NATIONAL_DEX_GOLBAT, @@ -2782,6 +2788,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_GRAPPLOCT, NATIONAL_DEX_OBSTAGOON, NATIONAL_DEX_RUNERIGUS, + // 5'07" / 1.7m NATIONAL_DEX_CHARIZARD, //NATIONAL_DEX_CHARIZARD, // Mega X //NATIONAL_DEX_CHARIZARD, // Mega Y @@ -2816,6 +2823,7 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_GOURGEIST, // Super Size NATIONAL_DEX_VOLCANION, NATIONAL_DEX_CRABOMINABLE, + // 5'11" / 1.8m NATIONAL_DEX_DODRIO, NATIONAL_DEX_AERODACTYL, NATIONAL_DEX_DRATINI, @@ -2845,7 +2853,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_DRACOZOLT, NATIONAL_DEX_DURALUDON, NATIONAL_DEX_ZARUDE, - + // 6'03" / 1.9m NATIONAL_DEX_ARCANINE, NATIONAL_DEX_RHYDON, //NATIONAL_DEX_HOUNDOOM, // Mega @@ -2867,6 +2875,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_INTELEON, NATIONAL_DEX_URSHIFU, // Single Strike Style //NATIONAL_DEX_URSHIFU, // Rapid Strike Style + // 6'07" / 2.0m NATIONAL_DEX_VENUSAUR, NATIONAL_DEX_EKANS, //NATIONAL_DEX_SLOWBRO, // Mega @@ -2894,6 +2903,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_TURTONATOR, NATIONAL_DEX_ARCTOVISH, NATIONAL_DEX_SPECTRIER, + // 6'11" / 2.1m //NATIONAL_DEX_AERODACTYL, // Mega NATIONAL_DEX_SNORLAX, NATIONAL_DEX_MANTINE, @@ -2908,7 +2918,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_RILLABOOM, NATIONAL_DEX_HATTERENE, NATIONAL_DEX_REGIDRAGO, - + // 7'03" / 2.2m //NATIONAL_DEX_PIDGEOT, // Mega NATIONAL_DEX_KANGASKHAN, //NATIONAL_DEX_KANGASKHAN, // Mega @@ -2922,6 +2932,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CORVIKNIGHT, NATIONAL_DEX_SILICOBRA, NATIONAL_DEX_GLASTRIER, + // 7'07" / 2.3m //NATIONAL_DEX_MEWTWO, // Mega X NATIONAL_DEX_FERALIGATR, NATIONAL_DEX_HARIYAMA, @@ -2929,13 +2940,14 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_SILVALLY, NATIONAL_DEX_ARCTOZOLT, NATIONAL_DEX_DRACOVISH, + // 7'10" / 2.4m //NATIONAL_DEX_VENUSAUR, // Mega NATIONAL_DEX_RHYPERIOR, NATIONAL_DEX_BUZZWOLE, NATIONAL_DEX_NECROZMA, //NATIONAL_DEX_CALYREX, // Ice Rider //NATIONAL_DEX_CALYREX, // Shadow Rider - + // 8'02" / 2.5m NATIONAL_DEX_LAPRAS, //NATIONAL_DEX_TYRANITAR, // Mega //NATIONAL_DEX_SHARPEDO, // Mega @@ -2947,19 +2959,23 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MUDSDALE, NATIONAL_DEX_MELMETAL, NATIONAL_DEX_STONJOURNER, + // 8'06" / 2.6m NATIONAL_DEX_BEARTIC, //NATIONAL_DEX_VIKAVOLT, // Totem-sized + // 8'10" / 2.7m NATIONAL_DEX_SEVIPER, //NATIONAL_DEX_ABOMASNOW, // Mega NATIONAL_DEX_AURORUS, - + // 9'02" / 2.8m NATIONAL_DEX_GOLURK, NATIONAL_DEX_COALOSSAL, NATIONAL_DEX_ZACIAN, // Hero of Many Battles //NATIONAL_DEX_ZACIAN, // Crowned Sword + // 9'06" / 2.9m NATIONAL_DEX_ZEKROM, NATIONAL_DEX_ZAMAZENTA, // Hero of Many Battles //NATIONAL_DEX_ZAMAZENTA, // Crowned Shield + // 9'10" / 3.0m //NATIONAL_DEX_WEEZING, // Galarian Form //NATIONAL_DEX_THUNDURUS, // Therian Form NATIONAL_DEX_KYUREM, @@ -2969,74 +2985,84 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_FALINKS, NATIONAL_DEX_COPPERAJAH, NATIONAL_DEX_DRAGAPULT, - + // 10'02" / 3.1m //NATIONAL_DEX_ARAQUANID, // Totem-sized + // 10'06" / 3.2m NATIONAL_DEX_ARCEUS, NATIONAL_DEX_RESHIRAM, + // 10'10" / 3.3m NATIONAL_DEX_SERPERIOR, //NATIONAL_DEX_KYUREM, // Black - + // 11'02" / 3.4m NATIONAL_DEX_SOLGALEO, + // 11'06" / 3.5m NATIONAL_DEX_ARBOK, NATIONAL_DEX_GROUDON, + // 11'10" / 3.6m //NATIONAL_DEX_KYUREM, // White NATIONAL_DEX_NAGANADEL, - + // 12'02" / 3.7m NATIONAL_DEX_REGIGIGAS, + // 12'06" / 3.8m NATIONAL_DEX_HO_OH, NATIONAL_DEX_XURKITREE, //NATIONAL_DEX_NECROZMA, // Dusk Mane NATIONAL_DEX_SANDACONDA, + // 12'10" / 3.9m NATIONAL_DEX_DHELMISE, - + // 13'01" / 4.0m NATIONAL_DEX_DRAGONAIR, NATIONAL_DEX_LUNALA, + // 13'09" / 4.2m NATIONAL_DEX_PALKIA, //NATIONAL_DEX_NECROZMA, // Dawn Wings - + // 14'09" / 4.5m NATIONAL_DEX_KYOGRE, NATIONAL_DEX_GIRATINA, // Altered Forme //NATIONAL_DEX_ZYGARDE, // Complete Forme - + // 16'05" / 5.0m //NATIONAL_DEX_GROUDON, // Primal NATIONAL_DEX_ZYGARDE, // 50% Forme - + // 17'01" / 5.2m NATIONAL_DEX_LUGIA, + // 17'09" / 5.4m NATIONAL_DEX_DIALGA, - + // 18'01" / 5.5m NATIONAL_DEX_GUZZLORD, NATIONAL_DEX_STAKATAKA, - + // 19'00" / 5.8m NATIONAL_DEX_YVELTAL, - + // 20'04" / 6.2m NATIONAL_DEX_MILOTIC, - + // 21'04" / 6.5m NATIONAL_DEX_GYARADOS, //NATIONAL_DEX_GYARADOS, // Mega //NATIONAL_DEX_HOOPA, // Unbound - + // 22'08" / 6.9m //NATIONAL_DEX_GIRATINA, // Origin Forme - + // 23'00" / 7.0m NATIONAL_DEX_RAYQUAZA, - + // 24'07" / 7.5m //NATIONAL_DEX_NECROZMA, // Ultra - + // 26'11" / 8.2m //NATIONAL_DEX_WISHIWASHI, // School Form - + // 28'10" / 8.8m NATIONAL_DEX_ONIX, - + // 30'02" / 9.2m NATIONAL_DEX_STEELIX, NATIONAL_DEX_CELESTEELA, - + // 32'02" / 9.8m //NATIONAL_DEX_KYOGRE, // Primal - + // 34'05" / 10.5m //NATIONAL_DEX_STEELIX, // Mega - + // 35'05" / 10.8m //NATIONAL_DEX_RAYQUAZA, // Mega - + // 35'09" / 10.9m //NATIONAL_DEX_EXEGGUTOR, // Alolan Form - + // 47'07" / 14.5m NATIONAL_DEX_WAILORD, - + // 65'07" / 20m NATIONAL_DEX_ETERNATUS, + // 328'01" / 100m + //NATIONAL_DEX_ETERNATUS, // Eternamax }; diff --git a/src/data/pokemon/tutor_learnsets.h b/src/data/pokemon/tutor_learnsets.h index 0e63c8d58..f6ad5b26e 100644 --- a/src/data/pokemon/tutor_learnsets.h +++ b/src/data/pokemon/tutor_learnsets.h @@ -37,12 +37,7 @@ const u16 gTutorMoves[] = static const u32 sTutorLearnsets[] = { - [SPECIES_NONE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), + [SPECIES_NONE] = (0), [SPECIES_BULBASAUR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) | TUTOR(MOVE_DEFENSE_CURL) diff --git a/src/daycare.c b/src/daycare.c index 2a1c2201f..f169ef695 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -816,13 +816,25 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent eggSpecies = GetEggSpecies(species[parentSlots[0]]); if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & EGG_GENDER_MALE) - { eggSpecies = SPECIES_NIDORAN_M; - } - if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & EGG_GENDER_MALE) - { + else if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & EGG_GENDER_MALE) eggSpecies = SPECIES_VOLBEAT; - } + #if P_NIDORAN_M_DITTO_BREED >= GEN_5 + else if (eggSpecies == SPECIES_NIDORAN_M && !(daycare->offspringPersonality & EGG_GENDER_MALE)) + eggSpecies = SPECIES_NIDORAN_F; + else if (eggSpecies == SPECIES_VOLBEAT && !(daycare->offspringPersonality & EGG_GENDER_MALE)) + eggSpecies = SPECIES_ILLUMISE; + #endif + else if (eggSpecies == SPECIES_MANAPHY) + eggSpecies = SPECIES_PHIONE; + else if (eggSpecies == SPECIES_SINISTEA_ANTIQUE) + eggSpecies = SPECIES_SINISTEA; + else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_VIVILLON) + eggSpecies = SPECIES_SCATTERBUG; + else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_ROTOM) + eggSpecies = SPECIES_ROTOM; + else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_FURFROU) + eggSpecies = SPECIES_FURFROU; // Make Ditto the "mother" slot if the other daycare mon is male. if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]].mon) != MON_FEMALE) diff --git a/src/party_menu.c b/src/party_menu.c index f68a20ee7..f7c9d913a 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -914,7 +914,7 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) DisplayPartyPokemonDataToTeachMove(slot, item, 0); break; case 2: // Evolution stone - if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, EVO_MODE_ITEM_CHECK, item, SPECIES_NONE) != SPECIES_NONE) + if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, EVO_MODE_ITEM_CHECK, item, NULL) != SPECIES_NONE) return FALSE; DisplayPartyPokemonDescriptionData(slot, PARTYBOX_DESC_NO_USE); break; @@ -5131,7 +5131,7 @@ static void Task_TryLearningNextMove(u8 taskId) static void PartyMenuTryEvolution(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; - u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, SPECIES_NONE); + u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); if (targetSpecies != SPECIES_NONE) { diff --git a/src/pokedex.c b/src/pokedex.c index cb0fc9ddd..a0231f8ac 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3991,10 +3991,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) gTasks[taskId].tState++; break; case 4: - if ((gBaseStats[dexNum].flags & FLAG_GENDER_DIFFERENCE)) - spriteId = CreateMonPicSprite(dexNum, 0, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); - else - spriteId = CreateMonSpriteFromNationalDexNumber(dexNum, MON_PAGE_X, MON_PAGE_Y, 0); + spriteId = CreateMonPicSprite(NationalPokedexNumToSpecies(dexNum), 0, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); diff --git a/src/pokemon.c b/src/pokemon.c index dadace777..ade2e29ca 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -66,6 +66,8 @@ static void Task_PlayMapChosenOrBattleBGM(u8 taskId); static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); static bool8 ShouldSkipFriendshipChange(void); static u8 SendMonToPC(struct Pokemon* mon); +static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv); +void TrySpecialOverworldEvo(); EWRAM_DATA static u8 sLearningMoveTableID = 0; EWRAM_DATA u8 gPlayerPartyCount = 0; @@ -74,6 +76,7 @@ EWRAM_DATA struct Pokemon gPlayerParty[PARTY_SIZE] = {0}; EWRAM_DATA struct Pokemon gEnemyParty[PARTY_SIZE] = {0}; EWRAM_DATA struct SpriteTemplate gMultiuseSpriteTemplate = {0}; EWRAM_DATA static struct MonSpritesGfxManager *sMonSpritesGfxManagers[MON_SPR_GFX_MANAGERS_COUNT] = {NULL}; +EWRAM_DATA static u8 sTriedEvolving = 0; #include "data/battle_moves.h" @@ -3190,6 +3193,9 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, u32 personality; u32 value; u16 checksum; + u8 i; + u8 availableIVs[NUM_STATS]; + u8 selectedIvs[LEGENDARY_PERFECT_IV_COUNT]; ZeroBoxMonData(boxMon); @@ -3283,6 +3289,51 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); iv = (value & (MAX_IV_MASK << 10)) >> 10; SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); + + #if P_LEGENDARY_PERFECT_IVS >= GEN_6 + if (gBaseStats[species].flags & (FLAG_LEGENDARY | FLAG_MYTHICAL | FLAG_ULTRA_BEAST)) + { + iv = MAX_PER_STAT_IVS; + // Initialize a list of IV indices. + for (i = 0; i < NUM_STATS; i++) + { + availableIVs[i] = i; + } + + // Select the 3 IVs that will be perfected. + for (i = 0; i < LEGENDARY_PERFECT_IV_COUNT; i++) + { + u8 index = Random() % (NUM_STATS - i); + selectedIvs[i] = availableIVs[index]; + RemoveIVIndexFromList(availableIVs, index); + } + for (i = 0; i < LEGENDARY_PERFECT_IV_COUNT; i++) + { + switch (selectedIvs[i]) + { + case STAT_HP: + SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); + break; + case STAT_ATK: + SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv); + break; + case STAT_DEF: + SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv); + break; + case STAT_SPEED: + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); + break; + case STAT_SPATK: + SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); + break; + case STAT_SPDEF: + SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); + break; + } + } + } + #endif + } if (gBaseStats[species].abilities[1]) @@ -5912,7 +5963,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov case 7: // ITEM4_EVO_STONE { - u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item, SPECIES_NONE); + u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item, NULL); if (targetSpecies != SPECIES_NONE) { @@ -6286,7 +6337,7 @@ u8 GetNatureFromPersonality(u32 personality) return personality % NUM_NATURES; } -u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, u16 tradePartnerSpecies) +u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, struct Pokemon *tradePartner) { int i, j; u16 targetSpecies = 0; @@ -6299,6 +6350,26 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, u u16 upperPersonality = personality >> 16; u8 holdEffect; u16 currentMap; + u16 partnerSpecies; + u16 partnerHeldItem; + u8 partnerHoldEffect; + + if (tradePartner != NULL) + { + partnerSpecies = GetMonData(tradePartner, MON_DATA_SPECIES, 0); + partnerHeldItem = GetMonData(tradePartner, MON_DATA_HELD_ITEM, 0); + + if (partnerHeldItem == ITEM_ENIGMA_BERRY) + partnerHoldEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; + else + partnerHoldEffect = ItemId_GetHoldEffect(partnerHeldItem); + } + else + { + partnerSpecies = SPECIES_NONE; + partnerHeldItem = ITEM_NONE; + partnerHoldEffect = HOLD_EFFECT_NONE; + } if (heldItem == ITEM_ENIGMA_BERRY_E_READER) holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; @@ -6306,7 +6377,9 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, u holdEffect = ItemId_GetHoldEffect(heldItem); // Prevent evolution with Everstone, unless we're just viewing the party menu with an evolution item - if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && mode != EVO_MODE_ITEM_CHECK) + if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE + && mode != EVO_MODE_ITEM_CHECK + && (P_KADABRA_EVERSTONE < GEN_4 || species != SPECIES_KADABRA)) return SPECIES_NONE; switch (mode) @@ -6469,21 +6542,21 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, u u8 nature = GetNature(mon); switch (nature) { - case NATURE_HARDY: - case NATURE_BRAVE: - case NATURE_ADAMANT: - case NATURE_NAUGHTY: - case NATURE_DOCILE: - case NATURE_IMPISH: - case NATURE_LAX: - case NATURE_HASTY: - case NATURE_JOLLY: - case NATURE_NAIVE: - case NATURE_RASH: - case NATURE_SASSY: - case NATURE_QUIRKY: - targetSpecies = gEvolutionTable[species][i].targetSpecies; - break; + case NATURE_HARDY: + case NATURE_BRAVE: + case NATURE_ADAMANT: + case NATURE_NAUGHTY: + case NATURE_DOCILE: + case NATURE_IMPISH: + case NATURE_LAX: + case NATURE_HASTY: + case NATURE_JOLLY: + case NATURE_NAIVE: + case NATURE_RASH: + case NATURE_SASSY: + case NATURE_QUIRKY: + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; } } break; @@ -6493,20 +6566,20 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, u u8 nature = GetNature(mon); switch (nature) { - case NATURE_LONELY: - case NATURE_BOLD: - case NATURE_RELAXED: - case NATURE_TIMID: - case NATURE_SERIOUS: - case NATURE_MODEST: - case NATURE_MILD: - case NATURE_QUIET: - case NATURE_BASHFUL: - case NATURE_CALM: - case NATURE_GENTLE: - case NATURE_CAREFUL: - targetSpecies = gEvolutionTable[species][i].targetSpecies; - break; + case NATURE_LONELY: + case NATURE_BOLD: + case NATURE_RELAXED: + case NATURE_TIMID: + case NATURE_SERIOUS: + case NATURE_MODEST: + case NATURE_MILD: + case NATURE_QUIET: + case NATURE_BASHFUL: + case NATURE_CALM: + case NATURE_GENTLE: + case NATURE_CAREFUL: + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; } } break; @@ -6530,7 +6603,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, u } break; case EVO_TRADE_SPECIFIC_MON: - if (gEvolutionTable[species][i].param == tradePartnerSpecies) + if (gEvolutionTable[species][i].param == partnerSpecies && partnerHoldEffect != HOLD_EFFECT_PREVENT_EVOLVE) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; } @@ -6557,6 +6630,47 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, u } } break; + #ifdef BATTLE_ENGINE + // Battle evolution without leveling; party slot is being passed into the evolutionItem arg. + case EVO_MODE_BATTLE_SPECIAL: + for (i = 0; i < EVOS_PER_MON; i++) + { + switch (gEvolutionTable[species][i].method) + { + case EVO_CRITICAL_HITS: + if (gPartyCriticalHits[evolutionItem] >= gEvolutionTable[species][i].param) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; + } + } + break; + #endif + // Overworld evolution without leveling; evolution method is being passed into the evolutionItem arg. + case EVO_MODE_OVERWORLD_SPECIAL: + for (i = 0; i < EVOS_PER_MON; i++) + { + switch (gEvolutionTable[species][i].method) + { + case EVO_SCRIPT_TRIGGER_DMG: + { + u16 currentHp = GetMonData(mon, MON_DATA_HP, NULL); + if (evolutionItem == EVO_SCRIPT_TRIGGER_DMG + && currentHp != 0 + && (GetMonData(mon, MON_DATA_MAX_HP, NULL) - currentHp >= gEvolutionTable[species][i].param)) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; + } + case EVO_DARK_SCROLL: + if (evolutionItem == EVO_DARK_SCROLL) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; + case EVO_WATER_SCROLL: + if (evolutionItem == EVO_WATER_SCROLL) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; + } + } + break; } return targetSpecies; @@ -7938,7 +8052,10 @@ bool8 HasTwoFramesAnimation(u16 species) return (species != SPECIES_CASTFORM && species != SPECIES_SPINDA && species != SPECIES_UNOWN - && species != SPECIES_CHERRIM); + && species != SPECIES_CHERRIM + && species != SPECIES_CASTFORM_SUNNY + && species != SPECIES_CASTFORM_RAINY + && species != SPECIES_CASTFORM_SNOWY); } static bool8 ShouldSkipFriendshipChange(void) @@ -8250,3 +8367,52 @@ u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove) } return 0; } + +static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv) +{ + s32 i, j; + u8 temp[NUM_STATS]; + + ivs[selectedIv] = 0xFF; + for (i = 0; i < NUM_STATS; i++) + { + temp[i] = ivs[i]; + } + + j = 0; + for (i = 0; i < NUM_STATS; i++) + { + if (temp[i] != 0xFF) + ivs[j++] = temp[i]; + } +} + +// Attempts to perform non-level/item related overworld evolutions; called by tryspecialevo command. +void TrySpecialOverworldEvo(void) +{ + u8 i; + u8 evoMethod = gSpecialVar_0x8000; + u16 canStopEvo = gSpecialVar_0x8001; + u16 tryMultiple = gSpecialVar_0x8002; + + for (i = 0; i < PARTY_SIZE; i++) + { + u16 targetSpecies = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, evoMethod, SPECIES_NONE); + if (targetSpecies != SPECIES_NONE && !(sTriedEvolving & gBitTable[i])) + { + sTriedEvolving |= gBitTable[i]; + if(gMain.callback2 == TrySpecialOverworldEvo) // This fixes small graphics glitches. + EvolutionScene(&gPlayerParty[i], targetSpecies, canStopEvo, i); + else + BeginEvolutionScene(&gPlayerParty[i], targetSpecies, canStopEvo, i); + if (tryMultiple) + gCB2_AfterEvolution = TrySpecialOverworldEvo; + else + gCB2_AfterEvolution = CB2_ReturnToField; + return; + } + } + + sTriedEvolving = 0; + SetMainCallback2(CB2_ReturnToField); +} diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 666330975..0faebfe74 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1235,8 +1235,8 @@ const u8 *const gMonIconTable[] = [SPECIES_ETERNATUS_ETERNAMAX] = gMonIcon_EternatusEternamax, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = gMonIcon_Urshifu, [SPECIES_ZARUDE_DADA] = gMonIcon_ZarudeDada, - [SPECIES_CALYREX_ICE_RIDER] = gMonIcon_QuestionMark,//gMonIcon_CalyrexIceRider, - [SPECIES_CALYREX_SHADOW_RIDER] = gMonIcon_QuestionMark,//gMonIcon_CalyrexShadowRider, + [SPECIES_CALYREX_ICE_RIDER] = gMonIcon_CalyrexIceRider, + [SPECIES_CALYREX_SHADOW_RIDER] = gMonIcon_CalyrexShadowRider, [SPECIES_EGG] = gMonIcon_Egg, }; diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index 1e6e57e7e..adfef9588 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -434,17 +434,37 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, @@ -463,6 +483,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, @@ -491,7 +512,9 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, @@ -506,6 +529,7 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, @@ -526,6 +550,164 @@ static const struct PokemonJumpMons sPokeJumpMons[] = { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELLOS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHAYMIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEERLING, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ALCREMIE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORPEKO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, }; void StartPokemonJump(u16 partyId, MainCallback exitCallback) diff --git a/src/trade.c b/src/trade.c index ae0942b80..1b2b38bd9 100644 --- a/src/trade.c +++ b/src/trade.c @@ -3797,7 +3797,7 @@ static bool8 AnimateTradeSequenceCable(void) case TS_STATE_TRY_EVOLUTION: // Only if in-game trade, link trades use CB2_TryLinkTradeEvolution TradeMons(gSpecialVar_0x8005, 0); gCB2_AfterEvolution = CB2_UpdateInGameTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES)); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]]); if (evoTarget != SPECIES_NONE) { TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); @@ -4297,7 +4297,7 @@ static bool8 AnimateTradeSequenceWireless(void) case TS_STATE_TRY_EVOLUTION: // Only if in-game trade, link trades use CB2_TryLinkTradeEvolution TradeMons(gSpecialVar_0x8005, 0); gCB2_AfterEvolution = CB2_UpdateInGameTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES)); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]]); if (evoTarget != SPECIES_NONE) { TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); @@ -4342,7 +4342,7 @@ static void CB2_TryLinkTradeEvolution(void) break; case 4: gCB2_AfterEvolution = CB2_SaveAndEndTrade; - evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, GetMonData(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]], MON_DATA_SPECIES)); + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE, &gPlayerParty[gSelectedTradeMonPositions[TRADE_PARTNER]]); if (evoTarget != SPECIES_NONE) TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]); else if (IsWirelessTrade())