diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 1a115f0181..04ba5cfd47 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -288,6 +288,10 @@ #define EVO_ITEM_DAY 40 // specified item is used on Pokémon, is day #define EVO_ITEM_HOLD 41 // Pokémon levels up, holds specified item #define EVO_LEVEL_FOG 42 // Pokémon reaches the specified level during fog in the overworld +#define EVO_MOVE_TWO_SEGMENT 43 // Pokémon levels up, knows specified move, has a personality value with a modulus of 0 +#define EVO_MOVE_THREE_SEGMENT 44 // Pokémon levels up, knows specified move, has a personality value with a modulus of 1-9 +#define EVO_LEVEL_FAMILY_OF_THREE 45 // Pokémon reaches the specified level with a personality value with a modulus of 0 +#define EVO_LEVEL_FAMILY_OF_FOUR 46 // Pokémon reaches the specified level with a personality value with a modulus of 1-9 #define EVOS_PER_MON 11 diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index 3515a78450..119450341f 100644 --- a/src/data/pokemon/evolution.h +++ b/src/data/pokemon/evolution.h @@ -36,6 +36,9 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}}, [SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}}, [SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}}, +#if P_GEN_9_POKEMON == TRUE + [SPECIES_PRIMEAPE] = {{EVO_MOVE, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}}, +#endif [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}}, [SPECIES_GROWLITHE_HISUIAN] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE_HISUIAN}}, [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}}, @@ -167,8 +170,15 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = #if P_GEN_4_POKEMON == TRUE [SPECIES_MURKROW] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW}}, [SPECIES_MISDREAVUS] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_MISMAGIUS}}, +#endif +#if P_GEN_9_POKEMON == TRUE + [SPECIES_GIRAFARIG] = {{EVO_MOVE, MOVE_TWIN_BEAM, SPECIES_FARIGIRAF}}, #endif [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}}, +#if P_GEN_9_POKEMON == TRUE + [SPECIES_DUNSPARCE] = {{EVO_MOVE_TWO_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_TWO_SEGMENT}, + {EVO_MOVE_THREE_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_THREE_SEGMENT}}, +#endif #if P_GEN_4_POKEMON == TRUE [SPECIES_GLIGAR] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}, {EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}}, @@ -179,6 +189,9 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_ITEM_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}}, #endif [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}}, +#if P_GEN_8_POKEMON == TRUE + [SPECIES_URSARING] = {{EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}}, +#endif [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}}, [SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}}, #if P_GEN_4_POKEMON == TRUE @@ -190,6 +203,9 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = #if P_GEN_4_POKEMON == TRUE [SPECIES_PORYGON2] = {{EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, {EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}}, +#endif +#if P_GEN_9_POKEMON == TRUE + [SPECIES_STANTLER] = {{EVO_MOVE, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}}, #endif [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, @@ -363,6 +379,10 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_COTTONEE] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT}}, [SPECIES_PETILIL] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT}, {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}}, +#if P_GEN_9_POKEMON == TRUE + [SPECIES_BASCULIN_WHITE_STRIPED] = {{EVO_NONE, 0, SPECIES_BASCULEGION_MALE}, + {EVO_NONE, 0, SPECIES_BASCULEGION_FEMALE}}, +#endif [SPECIES_SANDILE] = {{EVO_LEVEL, 29, SPECIES_KROKOROK}}, [SPECIES_KROKOROK] = {{EVO_LEVEL, 40, SPECIES_KROOKODILE}}, [SPECIES_DARUMAKA] = {{EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD_MODE}}, @@ -402,6 +422,9 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_MIENFOO] = {{EVO_LEVEL, 50, SPECIES_MIENSHAO}}, [SPECIES_GOLETT] = {{EVO_LEVEL, 43, SPECIES_GOLURK}}, [SPECIES_PAWNIARD] = {{EVO_LEVEL, 52, SPECIES_BISHARP}}, +#if P_GEN_9_POKEMON == TRUE + [SPECIES_BISHARP] = {{EVO_NONE, 0, SPECIES_KINGAMBIT}}, +#endif [SPECIES_RUFFLET] = {{EVO_LEVEL, 54, SPECIES_BRAVIARY}, {EVO_NONE, 0, SPECIES_BRAVIARY_HISUIAN}}, [SPECIES_VULLABY] = {{EVO_LEVEL, 54, SPECIES_MANDIBUZZ}}, @@ -557,8 +580,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_NYMBLE] = {{EVO_LEVEL, 24, SPECIES_LOKIX}}, [SPECIES_PAWMI] = {{EVO_LEVEL, 18, SPECIES_PAWMO}}, [SPECIES_PAWMO] = {{EVO_NONE, 0, SPECIES_PAWMOT}}, - [SPECIES_TANDEMAUS] = {{EVO_NONE, 0, SPECIES_MAUSHOLD_FAMILY_OF_FOUR}, - {EVO_NONE, 0, SPECIES_MAUSHOLD_FAMILY_OF_THREE}}, + [SPECIES_TANDEMAUS] = {{EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FAMILY_OF_FOUR}, + {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_FAMILY_OF_THREE}}, [SPECIES_FIDOUGH] = {{EVO_LEVEL, 26, SPECIES_DACHSBUN}}, [SPECIES_SMOLIV] = {{EVO_LEVEL, 25, SPECIES_DOLLIV}}, [SPECIES_DOLLIV] = {{EVO_LEVEL, 35, SPECIES_ARBOLIVA}}, @@ -594,7 +617,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_SANDSHREW_ALOLAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}}, [SPECIES_VULPIX_ALOLAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}}, [SPECIES_DIGLETT_ALOLAN] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLAN}}, - [SPECIES_MEOWTH_ALOLAN] = {{EVO_FRIENDSHIP, 28, SPECIES_PERSIAN_ALOLAN}}, + [SPECIES_MEOWTH_ALOLAN] = {{EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_ALOLAN}}, [SPECIES_GEODUDE_ALOLAN] = {{EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLAN}}, [SPECIES_GRAVELER_ALOLAN] = {{EVO_TRADE, 0, SPECIES_GOLEM_ALOLAN}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM_ALOLAN}}, @@ -650,7 +673,6 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = #endif #if P_GEN_8_POKEMON == TRUE [SPECIES_SINISTEA_ANTIQUE] = {{EVO_ITEM, ITEM_CHIPPED_POT, SPECIES_POLTEAGEIST_ANTIQUE}}, - [SPECIES_URSARING] = {{EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}}, [SPECIES_QWILFISH_HISUIAN] = {{EVO_MOVE, MOVE_BARB_BARRAGE, SPECIES_OVERQWIL}}, [SPECIES_SNEASEL_HISUIAN] = {{EVO_ITEM_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}, {EVO_ITEM_HOLD_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}}, diff --git a/src/pokemon.c b/src/pokemon.c index 2c33806619..b57382d415 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -7134,6 +7134,14 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s if (gEvolutionTable[species][i].param <= level) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; + case EVO_LEVEL_FAMILY_OF_FOUR: + if (gEvolutionTable[species][i].param <= level && (personality % 100) != 0) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; + case EVO_LEVEL_FAMILY_OF_THREE: + if (gEvolutionTable[species][i].param <= level && (personality % 100) == 0) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; case EVO_BEAUTY: if (gEvolutionTable[species][i].param <= beauty) targetSpecies = gEvolutionTable[species][i].targetSpecies; @@ -7142,6 +7150,14 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s if (MonKnowsMove(mon, gEvolutionTable[species][i].param)) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; + case EVO_MOVE_TWO_SEGMENT: + if (MonKnowsMove(mon, gEvolutionTable[species][i].param) && (personality % 100) != 0) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; + case EVO_MOVE_THREE_SEGMENT: + if (MonKnowsMove(mon, gEvolutionTable[species][i].param) && (personality % 100) == 0) + targetSpecies = gEvolutionTable[species][i].targetSpecies; + break; case EVO_FRIENDSHIP_MOVE_TYPE: if (friendship >= FRIENDSHIP_EVO_THRESHOLD) {