* Legendary Mon Fusion Evolution Compatibility Added Kyurem, Calyrex, and Necrozma Fusions have been implemented, however, the animation for the the process is incomplete, the party menu screen needs to be updated while the screen is whited out and it has proved beyond me right now. Smh * Added Fusion Move Prompts Handles cases for learning the fusion moves from the other fused mon and deleting the move when you unfuse (plus learning confusion (well a set choice in the data struct) if there are no moves left after deleting one) * Fix Bug With Fusion Mon Move Learning If the main fusion came after the fused mon in the party order it would try to teach the move to the next member in the party * Apply suggestions from code review Co-authored-by: LOuroboros <lunosouroboros@gmail.com> * Fix build * Fix fusion items being used up * Fixed animations * RefreshPartyMenu * Apply suggestions from code review Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com> * Apply suggestions * Update form_change_tables.h * Fix animation and simplify fusion tables * Fix party full message * Remove trailing whitespaces * Update party_menu.c * Update party_menu.c * Make IsFusionMon better * Apply suggestions from code review Co-authored-by: Bassoonian <iasperbassoonian@gmail.com> --------- Co-authored-by: TeamAquasHideout <jonathonheddings@gmail.com> Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com> Co-authored-by: LOuroboros <lunosouroboros@gmail.com> Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
868 lines
38 KiB
C
868 lines
38 KiB
C
static const struct FormChange sVenusaurFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE},
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCharizardFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_X, ITEM_CHARIZARDITE_X},
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_Y, ITEM_CHARIZARDITE_Y},
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sBlastoiseFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE},
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sBeedrillFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BEEDRILL_MEGA, ITEM_BEEDRILLITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sPidgeotFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PIDGEOT_MEGA, ITEM_PIDGEOTITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAlakazamFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALAKAZAM_MEGA, ITEM_ALAKAZITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSlowbroFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SLOWBRO_MEGA, ITEM_SLOWBRONITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGengarFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE},
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sKangaskhanFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_KANGASKHAN_MEGA, ITEM_KANGASKHANITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sPinsirFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PINSIR_MEGA, ITEM_PINSIRITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGyaradosFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GYARADOS_MEGA, ITEM_GYARADOSITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAerodactylFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AERODACTYL_MEGA, ITEM_AERODACTYLITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMewtwoFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEWTWO_MEGA_X, ITEM_MEWTWONITE_X},
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEWTWO_MEGA_Y, ITEM_MEWTWONITE_Y},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAmpharosFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AMPHAROS_MEGA, ITEM_AMPHAROSITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSteelixFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_STEELIX_MEGA, ITEM_STEELIXITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sScizorFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCIZOR_MEGA, ITEM_SCIZORITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sHeracrossFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HERACROSS_MEGA, ITEM_HERACRONITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sHoundoomFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HOUNDOOM_MEGA, ITEM_HOUNDOOMINITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sTyranitarFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_TYRANITAR_MEGA, ITEM_TYRANITARITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSceptileFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCEPTILE_MEGA, ITEM_SCEPTILITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sBlazikenFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLAZIKEN_MEGA, ITEM_BLAZIKENITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSwampertFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SWAMPERT_MEGA, ITEM_SWAMPERTITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSableyeFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SABLEYE_MEGA, ITEM_SABLENITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSharpedoFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SHARPEDO_MEGA, ITEM_SHARPEDONITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sManectricFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MANECTRIC_MEGA, ITEM_MANECTITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCameruptFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CAMERUPT_MEGA, ITEM_CAMERUPTITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGlalieFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GLALIE_MEGA, ITEM_GLALITITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMawileFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MAWILE_MEGA, ITEM_MAWILITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMedichamFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEDICHAM_MEGA, ITEM_MEDICHAMITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAltariaFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALTARIA_MEGA, ITEM_ALTARIANITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAbsolFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABSOL_MEGA, ITEM_ABSOLITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCastformFormChangeTable[] = {
|
|
#if B_WEATHER_FORMS >= GEN_5
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN, ABILITY_FORECAST},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN, ABILITY_FORECAST},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW, ABILITY_FORECAST},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE, ABILITY_FORECAST},
|
|
#else
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE},
|
|
#endif
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM_NORMAL},
|
|
{FORM_CHANGE_FAINT, SPECIES_CASTFORM_NORMAL},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM_NORMAL},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sBanetteFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BANETTE_MEGA, ITEM_BANETTITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAggronFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AGGRON_MEGA, ITEM_AGGRONITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGardevoirFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARDEVOIR_MEGA, ITEM_GARDEVOIRITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSalamenceFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SALAMENCE_MEGA, ITEM_SALAMENCITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMetagrossFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_METAGROSS_MEGA, ITEM_METAGROSSITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sLatiasFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIAS_MEGA, ITEM_LATIASITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sLatiosFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIOS_MEGA, ITEM_LATIOSITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sKyogreFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_KYOGRE_PRIMAL, ITEM_BLUE_ORB},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGroudonFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_GROUDON_PRIMAL, ITEM_RED_ORB},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sRayquazaFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE, SPECIES_RAYQUAZA_MEGA, MOVE_DRAGON_ASCENT},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
#if P_GEN_4_POKEMON == TRUE
|
|
static const struct FormChange sBurmyFormChangeTable[] = {
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_GRASS},
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_LONG_GRASS},
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_POND},
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_MOUNTAIN},
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_PLAIN},
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_CAVE},
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_SAND},
|
|
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH_CLOAK, BATTLE_TERRAIN_BUILDING},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCherrimFormChangeTable[] = {
|
|
#if B_WEATHER_FORMS >= GEN_5
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN, ABILITY_FLOWER_GIFT},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE, ABILITY_FLOWER_GIFT},
|
|
#else
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN},
|
|
{FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE},
|
|
#endif
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM_OVERCAST},
|
|
{FORM_CHANGE_FAINT, SPECIES_CHERRIM_OVERCAST},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM_OVERCAST},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sLopunnyFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LOPUNNY_MEGA, ITEM_LOPUNNITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGarchompFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARCHOMP_MEGA, ITEM_GARCHOMPITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sLucarioFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LUCARIO_MEGA, ITEM_LUCARIONITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAbomasnowFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABOMASNOW_MEGA, ITEM_ABOMASITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGalladeFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GALLADE_MEGA, ITEM_GALLADITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sRotomFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM, ITEM_ROTOM_CATALOG, 0},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_HEAT, ITEM_ROTOM_CATALOG, 1},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_WASH, ITEM_ROTOM_CATALOG, 2},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_FROST, ITEM_ROTOM_CATALOG, 3},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_FAN, ITEM_ROTOM_CATALOG, 4},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_MOW, ITEM_ROTOM_CATALOG, 5},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sDialgaFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_DIALGA, ITEM_NONE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_DIALGA_ORIGIN, ITEM_ADAMANT_CRYSTAL},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sPalkiaFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_PALKIA, ITEM_NONE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_PALKIA_ORIGIN, ITEM_LUSTROUS_GLOBE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGiratinaFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ALTERED, ITEM_NONE},
|
|
#if I_GRISEOUS_ORB_FORM_CHANGE < GEN_9
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB},
|
|
#endif
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_CORE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sShayminFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY},
|
|
{FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN_LAND},
|
|
{FORM_CHANGE_TIME_OF_DAY, SPECIES_SHAYMIN_LAND, NIGHT},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sArceusFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_NORMAL, ITEM_NONE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_FLYINIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_TOXIC_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_POISONIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_STONE_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_ROCKIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_EARTH_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_GROUNDIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_INSECT_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_BUGINIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_SPOOKY_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_GHOSTIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_IRON_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_STEELIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FLAME_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FIRIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_SPLASH_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_WATERIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_MEADOW_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_GRASSIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ZAP_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ELECTRIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_MIND_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_PSYCHIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICICLE_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRACO_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRAGONIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DREAD_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DARKINIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_PIXIE_PLATE, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_FAIRIUM_Z, ABILITY_MULTITYPE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
#endif
|
|
|
|
#if P_GEN_5_POKEMON == TRUE
|
|
static const struct FormChange sAudinoFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AUDINO_MEGA, ITEM_AUDINITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sDarmanitanFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_FAINT, SPECIES_DARMANITAN_STANDARD_MODE},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_STANDARD_MODE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sDarmanitanGalarianFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMeloettaFormChangeTable[] = {
|
|
{FORM_CHANGE_FAINT, SPECIES_MELOETTA_ARIA},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA_ARIA},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sTornadusFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_INCARNATE, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sThundurusFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_INCARNATE, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sLandorusFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_INCARNATE, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct Fusion sKyuremFusionTable[] = {
|
|
{0, ITEM_DNA_SPLICERS, SPECIES_KYUREM, SPECIES_RESHIRAM, SPECIES_KYUREM_WHITE},
|
|
{0, ITEM_DNA_SPLICERS, SPECIES_KYUREM, SPECIES_ZEKROM, SPECIES_KYUREM_BLACK},
|
|
{FUSION_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sKeldeoFormChangeTable[] = {
|
|
{FORM_CHANGE_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED},
|
|
{FORM_CHANGE_MOVE, SPECIES_KELDEO_ORDINARY, MOVE_SECRET_SWORD, WHEN_FORGOTTEN},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGenesectFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT, ITEM_NONE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_DOUSE_DRIVE, ITEM_DOUSE_DRIVE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_SHOCK_DRIVE, ITEM_SHOCK_DRIVE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_BURN_DRIVE, ITEM_BURN_DRIVE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_CHILL_DRIVE, ITEM_CHILL_DRIVE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
#endif
|
|
|
|
#if P_GEN_6_POKEMON == TRUE
|
|
static const struct FormChange sGreninjaBattleBondFormChangeTable[] = {
|
|
{FORM_CHANGE_FAINT, SPECIES_GRENINJA_BATTLE_BOND},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_GRENINJA_BATTLE_BOND},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAegislashFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH_SHIELD},
|
|
{FORM_CHANGE_FAINT, SPECIES_AEGISLASH_SHIELD},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH_SHIELD},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sXerneasFormChangeTable[] = {
|
|
{FORM_CHANGE_BEGIN_BATTLE, SPECIES_XERNEAS_ACTIVE},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS_NEUTRAL},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sZygardeFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10, ITEM_ZYGARDE_CUBE, 0},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 1},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sZygarde10FormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE, ITEM_ZYGARDE_CUBE, 0},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 1},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sZygardePowerConstructFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 0},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE, ITEM_ZYGARDE_CUBE, 1},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_ZYGARDE_COMPLETE, ABILITY_POWER_CONSTRUCT, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sZygarde10PowerConstructFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 0},
|
|
{FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10, ITEM_ZYGARDE_CUBE, 1},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_ZYGARDE_COMPLETE, ABILITY_POWER_CONSTRUCT, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sZygardeCompleteFormChangeTable[] = {
|
|
{FORM_CHANGE_FAINT},
|
|
{FORM_CHANGE_END_BATTLE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sDiancieFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_DIANCIE_MEGA, ITEM_DIANCITE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sHoopaFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED},
|
|
{FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
#endif
|
|
|
|
#if P_GEN_7_POKEMON == TRUE
|
|
static const struct FormChange sOricorioFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_BAILE, ITEM_RED_NECTAR},
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_POM_POM, ITEM_YELLOW_NECTAR},
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_PAU, ITEM_PINK_NECTAR},
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_SENSU, ITEM_PURPLE_NECTAR},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sWishiwashiFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SCHOOL, ABILITY_SCHOOLING, HP_HIGHER_THAN, 25},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SOLO, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI_SOLO},
|
|
{FORM_CHANGE_FAINT, SPECIES_WISHIWASHI_SOLO},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI_SOLO},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSilvallyFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_NORMAL, ITEM_NONE, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_GROUND, ITEM_GROUND_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_ROCK, ITEM_ROCK_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_BUG, ITEM_BUG_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_GHOST, ITEM_GHOST_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_STEEL, ITEM_STEEL_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FIRE, ITEM_FIRE_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_WATER, ITEM_WATER_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_GRASS, ITEM_GRASS_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_ELECTRIC, ITEM_ELECTRIC_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_PSYCHIC, ITEM_PSYCHIC_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_ICE, ITEM_ICE_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_DRAGON, ITEM_DRAGON_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_DARK, ITEM_DARK_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FAIRY, ITEM_FAIRY_MEMORY, ABILITY_RKS_SYSTEM},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMimikyuFormChangeTable[] = {
|
|
{FORM_CHANGE_FAINT, SPECIES_MIMIKYU_DISGUISED},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU_DISGUISED},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMiniorRedFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_RED, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_RED},
|
|
{FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_RED},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_RED},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sMiniorBlueFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_BLUE, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_BLUE, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_BLUE},
|
|
{FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_BLUE},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_BLUE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sMiniorGreenFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_GREEN, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_GREEN, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_GREEN},
|
|
{FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_GREEN},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_GREEN},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sMiniorIndigoFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_INDIGO, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_INDIGO, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_INDIGO},
|
|
{FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_INDIGO},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_INDIGO},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sMiniorOrangeFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_ORANGE, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_ORANGE, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_ORANGE},
|
|
{FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_ORANGE},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_ORANGE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sMiniorVioletFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_VIOLET, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_VIOLET, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_VIOLET},
|
|
{FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_VIOLET},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_VIOLET},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sMiniorYellowFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_YELLOW, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_YELLOW, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_YELLOW},
|
|
{FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_YELLOW},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_YELLOW},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct Fusion sNecrozmaFusionTable[] = {
|
|
{1, ITEM_N_SOLARIZER, SPECIES_NECROZMA, SPECIES_SOLGALEO, SPECIES_NECROZMA_DUSK_MANE, MOVE_SUNSTEEL_STRIKE, MOVE_CONFUSION},
|
|
{2, ITEM_N_LUNARIZER, SPECIES_NECROZMA, SPECIES_LUNALA, SPECIES_NECROZMA_DAWN_WINGS, MOVE_MOONGEIST_BEAM, MOVE_CONFUSION},
|
|
{FUSION_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sNecrozmaDuskManeFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_ULTRA_BURST, SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sNecrozmaDawnWingsFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_ULTRA_BURST, SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
#endif
|
|
|
|
#if P_GEN_8_POKEMON == TRUE
|
|
static const struct FormChange sCramorantFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_CRAMORANT_GULPING, ABILITY_GULP_MISSILE, HP_HIGHER_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_CRAMORANT_GORGING, ABILITY_GULP_MISSILE, HP_LOWER_EQ_THAN, 50},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_CRAMORANT},
|
|
{FORM_CHANGE_FAINT, SPECIES_CRAMORANT},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_CRAMORANT},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sEiscueFormChangeTable[] = {
|
|
{FORM_CHANGE_FAINT, SPECIES_EISCUE_ICE_FACE},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_EISCUE_ICE_FACE},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMorpekoFormChangeTable[] = {
|
|
{FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH},
|
|
{FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_FULL_BELLY, ABILITY_HUNGER_SWITCH},
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO_FULL_BELLY},
|
|
{FORM_CHANGE_FAINT, SPECIES_MORPEKO_FULL_BELLY},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO_FULL_BELLY},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sZacianFormChangeTable[] = {
|
|
{FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sZamazentaFormChangeTable[] = {
|
|
{FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH},
|
|
{FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct Fusion sCalyrexFusionTable[] = {
|
|
{3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_GLASTRIER, SPECIES_CALYREX_ICE_RIDER, MOVE_GLACIAL_LANCE, MOVE_CONFUSION},
|
|
{3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_SPECTRIER, SPECIES_CALYREX_SHADOW_RIDER, MOVE_ASTRAL_BARRAGE, MOVE_CONFUSION},
|
|
{FUSION_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sEnamorusFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_INCARNATE, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
#endif
|
|
|
|
#if P_GEN_9_POKEMON == TRUE
|
|
static const struct FormChange sOgerponFormChangeTable[] = {
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_TEAL_MASK, ITEM_NONE},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_WELLSPRING_MASK, ITEM_WELLSPRING_MASK},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_HEARTHFLAME_MASK, ITEM_HEARTHFLAME_MASK},
|
|
{FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_CORNERSTONE_MASK, ITEM_CORNERSTONE_MASK},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
#endif
|
|
|
|
static const struct FormChange sButterfreeFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BUTTERFREE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sPikachuFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_PIKACHU_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMeowthFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MEOWTH_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sMachampFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MACHAMP_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sKinglerFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_KINGLER_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sLaprasFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_LAPRAS_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sEeveeFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_EEVEE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSnorlaxFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SNORLAX_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
#if P_GEN_5_POKEMON == TRUE
|
|
static const struct FormChange sGarbodorFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GARBODOR_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
#endif
|
|
#if P_GEN_7_POKEMON == TRUE
|
|
static const struct FormChange sMelmetalFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MELMETAL_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
#endif
|
|
#if P_GEN_8_POKEMON == TRUE
|
|
static const struct FormChange sRillaboomFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_RILLABOOM_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCinderaceFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CINDERACE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sInteleonFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_INTELEON_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCorviknightFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CORVIKNIGHT_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sOrbeetleFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ORBEETLE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sDrednawFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DREDNAW_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCoalossalFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COALOSSAL_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sFlappleFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_FLAPPLE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAppletunFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_APPLETUN_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sSandacondaFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SANDACONDA_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sToxtricityAmpedFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_AMPED_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sToxtricityLowKeyFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
static const struct FormChange sCentiskorchFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CENTISKORCH_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sHattereneFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_HATTERENE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sGrimmsnarlFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GRIMMSNARL_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sAlcremieFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ALCREMIE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sCopperajahFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COPPERAJAH_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sDuraludonFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DURALUDON_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sUrshifuSingleStrikeFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
static const struct FormChange sPalafinZeroFormChangeTable[] =
|
|
{
|
|
{FORM_CHANGE_BATTLE_SWITCH, SPECIES_PALAFIN_HERO},
|
|
{FORM_CHANGE_TERMINATOR},
|
|
};
|
|
|
|
#endif
|
|
|
|
#undef WHEN_LEARNED
|
|
#undef WHEN_FORGOTTEN
|