diff --git a/pokeemerald-tools/evolved_teachable_learnsets.h b/pokeemerald-tools/evolved_teachable_learnsets.h new file mode 100644 index 0000000000..c2e280ff6f --- /dev/null +++ b/pokeemerald-tools/evolved_teachable_learnsets.h @@ -0,0 +1,12095 @@ +static const u16 sNoneTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +#if P_FAMILY_BULBASAUR +static const u16 sBulbasaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sIvysaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenusaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sEcosaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTerarisaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSymbisaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER +static const u16 sCharmanderTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCharmeleonTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCharizardTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sChariguanaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCharianaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sChariathanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE +static const u16 sSquirtleTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sWartortleTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sBlastoiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sFerrapinTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sFortoiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTurtilleryTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE +static const u16 sCaterpieTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sMetapodTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sButterfreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sButteflareTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPyrefreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sImpsectTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE +static const u16 sWeedleTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sKakunaTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sBeedrillTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBeebruteTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDronarchTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSepistrikeTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY +static const u16 sPidgeyTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgeottoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgeotTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgaeroTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgeozoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgephyrTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA +static const u16 sRattataTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRaticateTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRattchetTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRattaruleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW +static const u16 sSpearowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sFearowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sSneerowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sOrnithowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SPEAROW + +#if P_FAMILY_EKANS +static const u16 sEkansTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sArbokTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sNohtypTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sAdnokanaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +static const u16 sPikachuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRaichuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGorochuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sStromachuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW +static const u16 sSandshrewTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSandslashTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSandslamTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFerodilloTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN_F +static const u16 sNidoran_fTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidorinaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidoqueenTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidoregalTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidoarchyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_NIDORAN_F + +#if P_FAMILY_NIDORAN_M +static const u16 sNidoran_mTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidorinoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidokingTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidorulyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidominateTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_NIDORAN_M + +#if P_FAMILY_CLEFAIRY +static const u16 sClefairyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClefableTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClefaefaeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClefanautTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX +static const u16 sVulpixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sNinetalesTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sSpiritalesTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sYokayubiTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +static const u16 sJigglypuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWigglytuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGigglyhuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBogglyfuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT +static const u16 sZubatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sGolbatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sCrobatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPolabatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sVisibatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sHorribatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH +static const u16 sOddishTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGloomTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVileplumeTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRafflurkTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sConcorpsiaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS +static const u16 sParasTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sParasectTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSectasiteTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFungalithTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PARAS + +#if P_FAMILY_VENONAT +static const u16 sVenonatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenomothTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenomenaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenomenonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VENONAT + +#if P_FAMILY_DIGLETT +static const u16 sDiglettTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDugtrioTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDugroupleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sUnearthletTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDiglenoidTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH +static const u16 sMeowthTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPersianTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFelankhTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPatraphinxTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK +static const u16 sPsyduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sGolduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sGilduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPlatinupusTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PSYDUCK + +#if P_FAMILY_MANKEY +static const u16 sMankeyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPrimeapeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGorillashTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBonumbellTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE +static const u16 sGrowlitheTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sArcanineTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSingeshaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGuardianceTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG +static const u16 sPoliwagTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliwhirlTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliwrathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPolitoesTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliwiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA +static const u16 sAbraTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKadabraTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAlakazamTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSimsalabimTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVohooduTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTzarkartzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP +static const u16 sMachopTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachokeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachampTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachulkTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAbomachulkTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachitanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT +static const u16 sBellsproutTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWeepinbellTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVictreebelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMucktribelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCarnabellTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDevloraTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_BELLSPROUT + +#if P_FAMILY_TENTACOOL +static const u16 sTentacoolTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTentacruelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTentacateTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTentabomaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TENTACOOL + +#if P_FAMILY_GEODUDE +static const u16 sGeodudeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGravelerTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGolemTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSlagolemTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMoltremTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVolcanicolTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA +static const u16 sPonytaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sRapidashTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sCombustangTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sKnightmareTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE +static const u16 sSlowpokeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSlowbroTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSlowmateTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSlowchumTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE +static const u16 sMagnemiteTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnetonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnezoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnemeldTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnemastrTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD +static const u16 sFarfetchdTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sForfowldTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sFowlntomTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO +static const u16 sDoduoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sDodrioTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sQuadodoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sDodozenTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DODUO + +#if P_FAMILY_SEEL +static const u16 sSeelTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDewgongTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPrecipedTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sManatiiTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SEEL + +#if P_FAMILY_GRIMER +static const u16 sGrimerTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; +static const u16 sMukTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGunkTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSkumTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER +static const u16 sShellderTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sCloysterTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sAnenemyTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sGlaishellTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SHELLDER + +#if P_FAMILY_GASTLY +static const u16 sGastlyTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sHaunterTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sGengarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGengoneTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPoltergastTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGrimmTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX +static const u16 sOnixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSteelixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPlatnixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sObsidianixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sStalagmixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE +static const u16 sDrowzeeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sHypnoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLullooTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSomnisoothTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DROWZEE + +#if P_FAMILY_KRABBY +static const u16 sKrabbyTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKinglerTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKraklawTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTeklawnoTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB +static const u16 sVoltorbTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodeTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodesTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodexTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodemTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE +static const u16 sExeggcuteTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sExeggutorTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sExeggityTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sExeggtricTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE +static const u16 sCuboneTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMarowakTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sOsselobberTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWraiwrathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONLEE +static const u16 sHitmonleeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCleevoyantTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSpirituleeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_HITMONLEE + +#if P_FAMILY_HITMONCHAN +static const u16 sHitmonchanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sEnchancedTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRadiachanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_HITMONCHAN + +#if P_FAMILY_LICKITUNG +static const u16 sLickitungTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLickilickyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLickilollyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLickilatoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING +static const u16 sKoffingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWeezingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sHeevingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sChohkingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN +static const u16 sRhyhornTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhydonTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhyperiorTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhymarkablTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhylicTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhybornTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +static const u16 sChanseyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBlisseyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGogetteyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLukkeyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFortuniteyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA +static const u16 sTangelaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangrowthTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangatherTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangoliathTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangrappleTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGAKID +static const u16 sKangakidTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKangaskhanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKangallousTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKangarutalTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KANGAKID + +#if P_FAMILY_HORSEA +static const u16 sHorseaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSeadraTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKingdraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sLordraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPinnadraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN +static const u16 sGoldeenTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSeakingTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSearexTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sCapriseaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GOLDEEN + +#if P_FAMILY_STARYU +static const u16 sStaryuTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sStarmieTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sStarusTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sStarweTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +static const u16 sMr_mimeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMr_jestTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMr_foolTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER +static const u16 sScytherTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sScizorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRazerTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClaymorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +static const u16 sJynxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sJynkiesTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sJeepersTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +static const u16 sElectabuzzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectivireTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectivineTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectiwizzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +static const u16 sMagmarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagmortarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagmoreTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagmoltenTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR +static const u16 sPinsirTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPinsiriorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAbyssirTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PINSIR + +#if P_FAMILY_TAUROS +static const u16 sTaurosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTauroxTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sOxenfreeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP +static const u16 sMagikarpTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sGyaradosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sHydradosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDracosmicTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sQuazarTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS +static const u16 sLaprasTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sLochlassTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sNesseaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO +static const u16 sDittoTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sMorphoTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sMetamorphoTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DITTO + +#if P_FAMILY_EEVEE +static const u16 sEeveeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_UNAVAILABLE, +}; +static const u16 sVaporeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sRiveonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sBrineonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sJolteonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPlasmeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGalveonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFlareonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sSmoldeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sInferneonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON +static const u16 sPorygonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygon2TeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygonzTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygonxTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygonqTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_OVERHEAT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygon2a4TeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_OVERHEAT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE +static const u16 sOmanyteTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sOmastarTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sOmapalTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sOmagusTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_OMANYTE + +#if P_FAMILY_KABUTO +static const u16 sKabutoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sKabutopsTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKabutakTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKabustionTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KABUTO + +#if P_FAMILY_AERODACTYL +static const u16 sAerodactylTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMandiluftTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAmbalithicTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +static const u16 sSnorlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sActlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sGrizzlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO +static const u16 sArticunoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSnowoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFrostunusTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS +static const u16 sZapdosTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sShockatooTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVoltduoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES +static const u16 sMoltresTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sIgnithreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sInferntriTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI +static const u16 sDratiniTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sDragonairTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sDragoniteTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDragonierTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDragonaceTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDragontaleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DRATINI + +#if P_FAMILY_MEWTWO +static const u16 sMewtwoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMewthreeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMewfourTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW +static const u16 sMewTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sNyuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sIotaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MEW + +#if P_FAMILY_MISSINGNO1 +static const u16 sMissingno1TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO1 + +#if P_FAMILY_MISSINGNO2 +static const u16 sMissingno2TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO2 + +#if P_FAMILY_MISSINGNO3 +static const u16 sMissingno3TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO3 + +#if P_FAMILY_MISSINGNO4 +static const u16 sMissingno4TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO4 + +#if P_FAMILY_MISSINGNO5 +static const u16 sMissingno5TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; diff --git a/pokeemerald-tools/gen-new-graphics.py b/pokeemerald-tools/gen-new-graphics.py index a13caf2db5..538fd0125c 100644 --- a/pokeemerald-tools/gen-new-graphics.py +++ b/pokeemerald-tools/gen-new-graphics.py @@ -4,59 +4,85 @@ import openpyxl as pyxl from openpyxl.workbook import Workbook from openpyxl import load_workbook -Debug = 1 +Debug = 0 WriteOrAdd = 'w' Anim = False +Footprint = False GenName = "pkmnevolved" PkmnData = load_workbook('pkmndata.xlsx') PkmnDataFile = PkmnData['sanity-data'] CurrentSpecies = "" with open("pokemon.h", WriteOrAdd) as file: - file.write("// Normally, INCBIN_COMP acts like INCBIN_U32, but appends `.lz` to the file, compressing it;\n") - file.write("// If not compressing overworld gfx, make this an alias to INCBIN_32, so gfx will *not* be compressed\n") - file.write("#if !(OW_GFX_COMPRESS)\n") - file.write("#define INCBIN_COMP INCBIN_U32\n") - file.write("#endif\n\n") - file.write("const u32 gMonFrontPic_CircledQuestionMark[] = INCBIN_U32(\"graphics/pokemon/question_mark/circled/anim_front.4bpp.smol\");\n") - file.write("const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32(\"graphics/pokemon/question_mark/circled/back.4bpp.smol\");\n") - file.write("const u16 gMonPalette_CircledQuestionMark[] = INCBIN_U16(\"graphics/pokemon/question_mark/circled/normal.gbapal\");\n") - file.write("const u16 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U16(\"graphics/pokemon/question_mark/circled/shiny.gbapal\");\n") - file.write("const u8 gMonIcon_QuestionMark[] = INCBIN_U8(\"graphics/pokemon/question_mark/icon.4bpp\");\n") - file.write("#if P_FOOTPRINTS\n") - file.write("#if !P_GBA_STYLE_SPECIES_FOOTPRINTS\n") - file.write("\tconst u8 gMonFootprint_QuestionMark[] = INCBIN_U8(\"graphics/pokemon/question_mark/footprint.1bpp\");\n") - file.write("#else\n") - file.write("\tconst u8 gMonFootprint_QuestionMark[] = INCBIN_U8(\"graphics/pokemon/question_mark/footprint_gba.1bpp\");\n") - file.write("#endif //P_GBA_STYLE_SPECIES_FOOTPRINTS\n") - file.write("#endif //P_FOOTPRINTS\n") - file.write("const u32 gObjectEventPic_Substitute[] = INCBIN_COMP(\"graphics/pokemon/question_mark/overworld.4bpp\");\n\n") + if Debug == 1: + file.write("// Normally, INCBIN_COMP acts like INCBIN_U32, but appends `.lz` to the file, compressing it;\n") + file.write("// If not compressing overworld gfx, make this an alias to INCBIN_32, so gfx will *not* be compressed\n") + file.write("#if !(OW_GFX_COMPRESS)\n") + file.write("#define INCBIN_COMP INCBIN_U32\n") + file.write("#endif\n\n") + file.write("const u32 gMonFrontPic_CircledQuestionMark[] = INCBIN_U32(\"graphics/pokemon/question_mark/circled/anim_front.4bpp.smol\");\n") + file.write("const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32(\"graphics/pokemon/question_mark/circled/back.4bpp.smol\");\n") + file.write("const u16 gMonPalette_CircledQuestionMark[] = INCBIN_U16(\"graphics/pokemon/question_mark/circled/normal.gbapal\");\n") + file.write("const u16 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U16(\"graphics/pokemon/question_mark/circled/shiny.gbapal\");\n") + file.write("const u8 gMonIcon_QuestionMark[] = INCBIN_U8(\"graphics/pokemon/question_mark/icon.4bpp\");\n") + file.write("#if P_FOOTPRINTS\n") + file.write("#if !P_GBA_STYLE_SPECIES_FOOTPRINTS\n") + file.write("\tconst u8 gMonFootprint_QuestionMark[] = INCBIN_U8(\"graphics/pokemon/question_mark/footprint.1bpp\");\n") + file.write("#else\n") + file.write("\tconst u8 gMonFootprint_QuestionMark[] = INCBIN_U8(\"graphics/pokemon/question_mark/footprint_gba.1bpp\");\n") + file.write("#endif //P_GBA_STYLE_SPECIES_FOOTPRINTS\n") + file.write("#endif //P_FOOTPRINTS\n") + file.write("const u32 gObjectEventPic_Substitute[] = INCBIN_COMP(\"graphics/pokemon/question_mark/overworld.4bpp\");\n\n") #for row in PkmnDataFile.iter_rows(min_row=2, max_row=13, min_col=1, max_col=PkmnDataFile.max_column): - for row in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=PkmnDataFile.max_column): - fixCase = row[PkmnDataFile.min_column - 1].value - fixCase = fixCase[0] + fixCase[1:len(fixCase)].lower() - - if row[PkmnDataFile.max_column - 1].value == 1: - CurrentSpecies = row[PkmnDataFile.min_column - 1].value - file.write(f"#if P_FAMILY_{CurrentSpecies}\n") - - if Anim == True: - file.write("\t const u32 gMonFrontPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/anim_front.4bpp.smol\");\n") - else: - file.write("\t const u32 gMonFrontPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/front.4bpp.smol\");\n") - - file.write("\t const u32 gMonBackPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/back.4bpp.smol\");\n") - file.write("\t const u16 gMonPalette_" + fixCase + "[] = INCBIN_U16(\"graphics/pokemon/" + fixCase.lower() + "/front.gbapal\");\n") - file.write("\t const u16 gMonShinyPalette_" + fixCase + "[] = INCBIN_U16(\"graphics/pokemon/" + fixCase.lower() + "/back.gbapal\");\n") - file.write("\t const u8 gMonIcon_" + fixCase + "[] = INCBIN_U8(\"graphics/pokemon/" + fixCase.lower() + "/icon.4bpp\");\n") - file.write("\t const u8 gMonFootprint_" + fixCase + "[] = INCBIN_U8(\"graphics/pokemon/" + fixCase.lower() + "/footprint.1bpp\");\n") - file.write("\n") - - if PkmnDataFile.cell(row[0].row + 1, PkmnDataFile.max_column).value == 1:#if the next mon is a new species - file.write(f"#endif //P_FAMILY_{CurrentSpecies}\n\n") - elif PkmnDataFile.cell(row[0].row + 1, PkmnDataFile.min_column).value == None:#if the next mon is a new species - file.write(f"#endif //P_FAMILY_{CurrentSpecies}\n\n") + + if Debug == 1: + for row in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=PkmnDataFile.max_column): + fixCase = row[PkmnDataFile.min_column - 1].value + fixCase = fixCase[0] + fixCase[1:len(fixCase)].lower() + + if row[PkmnDataFile.max_column - 1].value == 1: + CurrentSpecies = row[PkmnDataFile.min_column - 1].value + file.write(f"#if P_FAMILY_{CurrentSpecies}\n") + + if Anim == True: + file.write("\t const u32 gMonFrontPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/anim_front.4bpp.smol\");\n") + else: + file.write("\t const u32 gMonFrontPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/front.4bpp.smol\");\n") + + file.write("\t const u32 gMonBackPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/back.4bpp.smol\");\n") + file.write("\t const u16 gMonPalette_" + fixCase + "[] = INCBIN_U16(\"graphics/pokemon/" + fixCase.lower() + "/front.gbapal\");\n") + file.write("\t const u16 gMonShinyPalette_" + fixCase + "[] = INCBIN_U16(\"graphics/pokemon/" + fixCase.lower() + "/back.gbapal\");\n") + file.write("\t const u8 gMonIcon_" + fixCase + "[] = INCBIN_U8(\"graphics/pokemon/" + fixCase.lower() + "/icon.4bpp\");\n") + if Footprint == True: + file.write("\t const u8 gMonFootprint_" + fixCase + "[] = INCBIN_U8(\"graphics/pokemon/" + fixCase.lower() + "/footprint.1bpp\");\n") + + file.write("\n") + + if PkmnDataFile.cell(row[0].row + 1, PkmnDataFile.max_column).value == 1:#if the next mon is a new species + file.write(f"#endif //P_FAMILY_{CurrentSpecies}\n\n") + elif PkmnDataFile.cell(row[0].row + 1, PkmnDataFile.min_column).value == None:#if the next mon is a new species + file.write(f"#endif //P_FAMILY_{CurrentSpecies}\n\n") + + else: + for row in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=PkmnDataFile.max_column): + fixCase = row[PkmnDataFile.min_column - 1].value + fixCase = fixCase[0] + fixCase[1:len(fixCase)].lower() + + if row[PkmnDataFile.max_column - 2].value == 1: + + if Anim == True: + file.write("\t const u32 gMonFrontPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/anim_front.4bpp.smol\");\n") + else: + file.write("\t const u32 gMonFrontPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/front.4bpp.smol\");\n") + + file.write("\t const u32 gMonBackPic_" + fixCase + "[] = INCBIN_U32(\"graphics/pokemon/" + fixCase.lower() + "/back.4bpp.smol\");\n") + file.write("\t const u16 gMonPalette_" + fixCase + "[] = INCBIN_U16(\"graphics/pokemon/" + fixCase.lower() + "/front.gbapal\");\n") + file.write("\t const u16 gMonShinyPalette_" + fixCase + "[] = INCBIN_U16(\"graphics/pokemon/" + fixCase.lower() + "/back.gbapal\");\n") + file.write("\t const u8 gMonIcon_" + fixCase + "[] = INCBIN_U8(\"graphics/pokemon/" + fixCase.lower() + "/icon.4bpp\");\n") + if Footprint == True: + file.write("\t const u8 gMonFootprint_" + fixCase + "[] = INCBIN_U8(\"graphics/pokemon/" + fixCase.lower() + "/footprint.1bpp\");\n") + file.write("\n") file.write("\tconst u32 gMonFrontPic_Egg[] = INCBIN_U32(\"graphics/pokemon/egg/anim_front.4bpp.smol\");\n") file.write("\tconst u16 gMonPalette_Egg[] = INCBIN_U16(\"graphics/pokemon/egg/normal.gbapal\");\n") diff --git a/pokeemerald-tools/gen-new-pokedex.py b/pokeemerald-tools/gen-new-pokedex.py index d5bdd5fd03..b2a6296350 100644 --- a/pokeemerald-tools/gen-new-pokedex.py +++ b/pokeemerald-tools/gen-new-pokedex.py @@ -8,7 +8,7 @@ from openpyxl.utils import get_column_letter from openpyxl.workbook import Workbook from openpyxl import load_workbook -Debug = 1 +Debug = 0 WriteOrAdd = 'w' GenName = "pkmnevolved" PkmnData = load_workbook('pkmndata.xlsx') @@ -35,30 +35,112 @@ with open("species.h", WriteOrAdd) as file: SpeciesIndex += 1 for species in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=1): - for data in species: # if PkmnDataFile.cell(row = PkmnDataFile.min_row, column = data.column).value == ".natDexNeeded" and data.value == 1: # file.write(f"\t#define SPECIES_ {PkmnDataFile.cell(row = data.row, column = PkmnDataFile.min_column).value} \t\t {SpeciesIndex} \n") # SpeciesIndex += 1 - file.write(f"#define SPECIES_{PkmnDataFile.cell(row = data.row, column = PkmnDataFile.min_column).value}\t\t{SpeciesIndex}\n") - SpeciesIndex += 1 - - file.write(f"\n#define SPECIES_EGG\t\t{SpeciesIndex}\n") + file.write(f"#define SPECIES_{species[0].value}\t\t{SpeciesIndex}\n") + SpeciesIndex += 1 + if species[0].row == PkmnDataFile.max_row: + file.write(f"\n#define SPECIES_EGG ({species[0].value} + 1)\n") + file.write(f"#define NUM_SPECIES SPECIES_EGG\n") file.write(f"#define SPECIES_SHINY_TAG 5000\n") file.write(f"#endif // GUARD_CONSTANTS_SPECIES_H\n") + file.write("//end of program") + +if Debug: + with open("species_enabled.h", WriteOrAdd) as file: #species_enabled.h config gen + file.write("#ifndef GUARD_CONFIG_POKEDEX_H\n") + file.write("#define GUARD_CONFIG_POKEDEX_H\n\n") + file.write("#define P_GEN_1_POKEMON FALSE // Generation 1 Pokémon (RGBY)\n") + file.write("#define P_GEN_2_POKEMON FALSE // Generation 2 Pokémon (GSC)\n") + file.write("#define P_GEN_3_POKEMON FALSE // Generation 3 Pokémon (RSE, FRLG)\n") + file.write("#define P_GEN_4_POKEMON FALSE // Generation 4 Pokémon (DPPt, HGSS)\n") + file.write("#define P_GEN_5_POKEMON FALSE // Generation 5 Pokémon (BW, B2W2)\n") + file.write("#define P_GEN_6_POKEMON FALSE // Generation 6 Pokémon (XY, ORAS)\n") + file.write("#define P_GEN_7_POKEMON FALSE // Generation 7 Pokémon (SM, USUM, LGPE)\n") + file.write("#define P_GEN_8_POKEMON FALSE // Generation 8 Pokémon (SwSh, BDSP, LA)\n") + file.write("#define P_GEN_9_POKEMON FALSE // Generation 9 Pokémon (SV)\n") + file.write("#define P_GEN_EVO_POKEMON TRUE // Generation EVO Pokémon (??)\n\n") + + file.write("// Setting this to TRUE will add the new evolutions to the Regional Dex.\n") + file.write("#define P_NEW_EVOS_IN_REGIONAL_DEX TRUE\n\n") + + file.write("// Battle gimmick specific Forms.\n") + file.write("#define P_MEGA_EVOLUTIONS TRUE\n") + file.write("#define P_PRIMAL_REVERSIONS TRUE // Groudon and Kyogre only.\n") + file.write("#define P_ULTRA_BURST_FORMS TRUE // Ultra Necrozma only.\n") + file.write("#define P_GIGANTAMAX_FORMS TRUE\n") + file.write("#define P_TERA_FORMS TRUE\n\n") + + file.write("#define P_GEN_9_MEGA_EVOLUTIONS P_MEGA_EVOLUTIONS // Mega Evolutions introduced in Z-A and its DLC\n\n") + + file.write("// Fusion forms\n") + file.write("#define P_FUSION_FORMS TRUE\n\n") + + file.write("// Regional Forms. Includes Regional Form evolutions, like Sirfetch'd.\n") + file.write("#define P_REGIONAL_FORMS TRUE\n") + file.write("#define P_ALOLAN_FORMS P_REGIONAL_FORMS\n") + file.write("#define P_GALARIAN_FORMS P_REGIONAL_FORMS\n") + file.write("#define P_HISUIAN_FORMS P_REGIONAL_FORMS\n") + file.write("#define P_PALDEAN_FORMS P_REGIONAL_FORMS\n\n") + + file.write("// Big groups of forms that aren't always desired when choosing families.\n") + file.write("#define P_PIKACHU_EXTRA_FORMS TRUE\n") + file.write("#define P_COSPLAY_PIKACHU_FORMS P_PIKACHU_EXTRA_FORMS\n") + file.write("#define P_CAP_PIKACHU_FORMS P_PIKACHU_EXTRA_FORMS\n\n") + + file.write("// Cross-generation evolutions. Includes pre-evolutions.\n") + file.write("#define P_CROSS_GENERATION_EVOS TRUE\n") + file.write("#define P_GEN_2_CROSS_EVOS P_CROSS_GENERATION_EVOS\n") + file.write("#define P_GEN_3_CROSS_EVOS P_CROSS_GENERATION_EVOS\n") + file.write("#define P_GEN_4_CROSS_EVOS P_CROSS_GENERATION_EVOS\n") + file.write("//#define P_GEN_5_CROSS_EVOS // Gen 5 didn't introduce any cross-gen evos.\n") + file.write("#define P_GEN_6_CROSS_EVOS P_CROSS_GENERATION_EVOS // Just Sylveon.\n") + file.write("//#define P_GEN_7_CROSS_EVOS // Alolan evolutions handled by P_ALOLAN_FORMS.\n") + file.write("#define P_GEN_8_CROSS_EVOS P_CROSS_GENERATION_EVOS // Regional evolutions handled by P_GALARIAN_FORMS and P_HISUIAN_FORMS.\n") + file.write("#define P_GEN_9_CROSS_EVOS P_CROSS_GENERATION_EVOS // Clodsire handled by P_PALDEAN_FORMS.\n\n") + + file.write("// To disable specific families, replace P_GEN_x_POKEMON with FALSE.\n") + for row in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=1): + if PkmnDataFile.cell(row[0].row, PkmnDataFile.max_column).value == 1: + file.write(f"#define P_FAMILY_{row[0].value}\t\t\tP_GEN_EVO_POKEMON\n") + file.write(f"\n#endif //GUARD_CONFIG_SPECIES_ENABLED_H") + +with open("new-mons_species.h", WriteOrAdd) as file: #species_enabled.h config gen + for species in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=PkmnDataFile.min_column, max_col=PkmnDataFile.max_column): + for data in species: + if PkmnDataFile.cell(row = PkmnDataFile.min_row, column = data.column).value == ".natDexNeeded" and data.value == 1: + file.write(f"#define P_FAMILY_{species[0].value} \t\t\tP_GEN_EVO_POKEMON\n") + + file.write("//Species File Update\n") + file.write("#ifndef GUARD_CONSTANTS_SPECIES_H\n") + file.write("#define GUARD_CONSTANTS_SPECIES_H\n\n") + file.write(f"#define SPECIES_NONE \t\t {SpeciesIndex} \n") + + + CurrentMaxSpecies = 1572 + SpeciesIndex = CurrentMaxSpecies + SpeciesIndex += 1 + for species in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=PkmnDataFile.max_column): + for data in species: + if PkmnDataFile.cell(row = 1, column = data.column).value == ".natDexNeeded" and data.value == 1: + file.write(f"#define SPECIES_{species[0].value}\t\t{SpeciesIndex}\n") + SpeciesIndex += 1 + file.write("//end of program") -with open("pokedex.h", WriteOrAdd) as file: - file.write("//National Dex Start\n") - file.write("#ifndef GUARD_CONSTANTS_POKEDEX_H\n") - file.write("#define GUARD_CONSTANTS_POKEDEX_H\n\n") - file.write("// National Pokédex order\n") - file.write("// These constants are NOT disabled by P_GEN_X_POKEMON to keep pokedex_orders.h clean.\n") - file.write("enum NationalDexOrder\n{\n") - file.write("\tNATIONAL_DEX_NONE\n") - file.write("\t//" + National + " Dex Start\n") - +with open("pokedex.h", WriteOrAdd) as file: #species_enabled.h config gen + + file.write(f"//National Dex Start\n") + file.write(f"#ifndef GUARD_CONSTANTS_POKEDEX_H\n") + file.write(f"#define GUARD_CONSTANTS_POKEDEX_H\n") + file.write(f"// National Pokédex order\n") + file.write(f"// These constants are NOT disabled by P_GEN_X_POKEMON to keep pokedex_orders.h clean.\n") + file.write(f"enum NationalDexOrder\n{{\n") + file.write(f"\tNATIONAL_DEX_NONE,\n") + for species in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=1): for data in species: #if PkmnDataFile.cell(row = PkmnDataFile.min_row, column = data.column).value == ".natDexNeeded" and data.value == 1: @@ -71,7 +153,7 @@ with open("pokedex.h", WriteOrAdd) as file: file.write("// Kanto Pokédex order\n\n") file.write("enum KantoDexOrder\n{\n") - file.write("\tKANTO_DEX_NONE\n") + file.write("\tKANTO_DEX_NONE,\n") file.write("\t//" + Region + " Dex Start\n") for species in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=1, max_col=1): @@ -113,11 +195,4 @@ with open("pokedex.h", WriteOrAdd) as file: file.write("\tFLAG_SET_CAUGHT\n};\n\n") file.write("#endif") -# file.write("\n//" + Region + " to National Dex Start\n") -# for species in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=PkmnDataFile.min_column, max_col=PkmnDataFile.max_column): -# for data in species: -# if PkmnDataFile.cell(row = PkmnDataFile.min_row, column = data.column).value == ".natDexNeeded" and data.value == 1: -# file.write("\t"+ Region + "_TO_" + National + "(" + PkmnDataFile.cell(row = data.row, column = PkmnDataFile.min_column).value + "),\n") - - file.write("//end of program") \ No newline at end of file diff --git a/pokeemerald-tools/gen_9.h b/pokeemerald-tools/gen_9.h new file mode 100644 index 0000000000..44e0342e14 --- /dev/null +++ b/pokeemerald-tools/gen_9.h @@ -0,0 +1,6369 @@ +//learnset for PkmnEvolved +#define LEVEL_UP_MOVE(lvl, moveLearned) {.move = moveLearned, .level = lvl} +#define LEVEL_UP_END {.move = LEVEL_UP_MOVE_END, .level = 0} + +static const struct LevelUpMove sNoneLevelUpLearnset[] = { + LEVEL_UP_MOVE(1, MOVE_POUND), + LEVEL_UP_END +}; +#endif + +#if P_FAMILY_BULBASAUR +static const struct LevelUpMove sBulbasaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 4 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 10 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 20 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 25 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 28 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 32 , MOVE_GROWTH), + LEVEL_UP_MOVE( 36 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 39 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 46 , MOVE_SOLARBEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sIvysaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 10 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 29 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 32 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 38 , MOVE_GROWTH), + LEVEL_UP_MOVE( 43 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 47 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 56 , MOVE_SOLARBEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVenusaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 10 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 29 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 34 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_GROWTH), + LEVEL_UP_MOVE( 46 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 53 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 65 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 70 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sEcosaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 10 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 29 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 34 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_GROWTH), + LEVEL_UP_MOVE( 46 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 53 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 65 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 70 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTerarisaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 10 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 29 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 34 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_GROWTH), + LEVEL_UP_MOVE( 46 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 53 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 65 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 70 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSymbisaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 10 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 29 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 34 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_GROWTH), + LEVEL_UP_MOVE( 46 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 53 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 65 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 70 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_CHARMANDER +static const struct LevelUpMove sCharmanderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 14 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 19 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 31 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 37 , MOVE_SLASH), + LEVEL_UP_MOVE( 43 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 49 , MOVE_HEAT_WAVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCharmeleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 16 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 20 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 27 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 34 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 41 , MOVE_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 55 , MOVE_HEAT_WAVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCharizardLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 1 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 20 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 27 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 34 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 36 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_SLASH), + LEVEL_UP_MOVE( 54 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 64 , MOVE_HEAT_WAVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sChariguanaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 1 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 16 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 23 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 27 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 34 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 36 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_SLASH), + LEVEL_UP_MOVE( 54 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 64 , MOVE_HEAT_WAVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCharianaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 1 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 16 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 23 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 27 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 34 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 36 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_SLASH), + LEVEL_UP_MOVE( 54 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 64 , MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 70 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sChariathanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 1 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 16 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 23 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 27 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 34 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 36 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_SLASH), + LEVEL_UP_MOVE( 54 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 64 , MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 70 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SQUIRTLE +static const struct LevelUpMove sSquirtleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 4 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 10 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 18 , MOVE_BITE), + LEVEL_UP_MOVE( 21 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 24 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 28 , MOVE_PROTECT), + LEVEL_UP_MOVE( 33 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 40 , MOVE_SKULL_BASH), + LEVEL_UP_MOVE( 47 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWartortleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 4 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 10 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 31 , MOVE_PROTECT), + LEVEL_UP_MOVE( 37 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 45 , MOVE_SKULL_BASH), + LEVEL_UP_MOVE( 53 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBlastoiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 10 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 31 , MOVE_PROTECT), + LEVEL_UP_MOVE( 42 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 55 , MOVE_SKULL_BASH), + LEVEL_UP_MOVE( 68 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFerrapinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 10 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 31 , MOVE_PROTECT), + LEVEL_UP_MOVE( 42 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 55 , MOVE_SKULL_BASH), + LEVEL_UP_MOVE( 68 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFortoiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 10 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 31 , MOVE_PROTECT), + LEVEL_UP_MOVE( 42 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 52 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 55 , MOVE_SKULL_BASH), + LEVEL_UP_MOVE( 68 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTurtilleryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 10 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 31 , MOVE_PROTECT), + LEVEL_UP_MOVE( 42 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 52 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 55 , MOVE_SKULL_BASH), + LEVEL_UP_MOVE( 68 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_CATERPIE +static const struct LevelUpMove sCaterpieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMetapodLevelUpLearnset[] = { + LEVEL_UP_MOVE( 7 , MOVE_HARDEN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sButterfreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 14 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 18 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 23 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 28 , MOVE_GUST), + LEVEL_UP_MOVE( 34 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 40 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 47 , MOVE_SILVER_WIND), + LEVEL_UP_END +}; + +static const struct LevelUpMove sButteflareLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 11 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 14 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 18 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 22 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 23 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 25 , MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 28 , MOVE_GUST), + LEVEL_UP_MOVE( 34 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 40 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 47 , MOVE_SILVER_WIND), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPyrefreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 11 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 14 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 18 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 23 , MOVE_GUST), + LEVEL_UP_MOVE( 25 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 28 , MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 34 , MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 36 , MOVE_WEATHER_BALL), + LEVEL_UP_MOVE( 40 , MOVE_AIR_CUTTER), + LEVEL_UP_MOVE( 47 , MOVE_OVERHEAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sImpsectLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 11 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 14 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 18 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 23 , MOVE_GUST), + LEVEL_UP_MOVE( 25 , MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 28 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 34 , MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 36 , MOVE_WEATHER_BALL), + LEVEL_UP_MOVE( 40 , MOVE_AIR_CUTTER), + LEVEL_UP_MOVE( 45 , MOVE_OVERHEAT), + LEVEL_UP_MOVE( 47 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 50 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 55 , MOVE_ERUPTION), + LEVEL_UP_MOVE( 60 , MOVE_BUG_BUZZ), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_WEEDLE +static const struct LevelUpMove sWeedleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKakunaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 7 , MOVE_HARDEN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBeedrillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 20 , MOVE_TWINEEDLE), + LEVEL_UP_MOVE( 25 , MOVE_RAGE), + LEVEL_UP_MOVE( 30 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 35 , MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 40 , MOVE_AGILITY), + LEVEL_UP_MOVE( 45 , MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBeebruteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 20 , MOVE_TWINEEDLE), + LEVEL_UP_MOVE( 25 , MOVE_RAGE), + LEVEL_UP_MOVE( 25 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 30 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 35 , MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 40 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 50 , MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDronarchLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_BIDE), + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 20 , MOVE_TWINEEDLE), + LEVEL_UP_MOVE( 25 , MOVE_RAGE), + LEVEL_UP_MOVE( 25 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 30 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 30 , MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 36 , MOVE_PROTECT), + LEVEL_UP_MOVE( 36 , MOVE_REFLECT), + LEVEL_UP_MOVE( 36 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 36 , MOVE_BARRIER), + LEVEL_UP_MOVE( 40 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 45 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 45 , MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE( 50 , MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSepistrikeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 20 , MOVE_TWINEEDLE), + LEVEL_UP_MOVE( 25 , MOVE_RAGE), + LEVEL_UP_MOVE( 30 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 30 , MOVE_SLASH), + LEVEL_UP_MOVE( 35 , MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 36 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 36 , MOVE_ENCORE), + LEVEL_UP_MOVE( 40 , MOVE_AGILITY), + LEVEL_UP_MOVE( 40 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 45 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 55 , MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PIDGEY +static const struct LevelUpMove sPidgeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GUST), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 19 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 25 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 29 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 34 , MOVE_AGILITY), + LEVEL_UP_MOVE( 38 , MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPidgeottoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_GUST), + LEVEL_UP_MOVE( 5 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GUST), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 27 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 31 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 35 , MOVE_AGILITY), + LEVEL_UP_MOVE( 40 , MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPidgeotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_GUST), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GUST), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 27 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 31 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 36 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 41 , MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPidgaeroLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_GUST), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GUST), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 27 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 31 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 36 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 41 , MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE( 47 , MOVE_STEEL_WING), + LEVEL_UP_MOVE( 52 , MOVE_VOLT_TACKLE), + LEVEL_UP_MOVE( 58 , MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPidgeozoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_GUST), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GUST), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 27 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 31 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 36 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 41 , MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE( 47 , MOVE_STEEL_WING), + LEVEL_UP_MOVE( 52 , MOVE_VOLT_TACKLE), + LEVEL_UP_MOVE( 58 , MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPidgephyrLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_GUST), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GUST), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 27 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 31 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 36 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 41 , MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE( 47 , MOVE_STEEL_WING), + LEVEL_UP_MOVE( 52 , MOVE_VOLT_TACKLE), + LEVEL_UP_MOVE( 58 , MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_RATTATA +static const struct LevelUpMove sRattataLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 13 , MOVE_HYPER_FANG), + LEVEL_UP_MOVE( 20 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 27 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 34 , MOVE_SUPER_FANG), + LEVEL_UP_MOVE( 41 , MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRaticateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 13 , MOVE_HYPER_FANG), + LEVEL_UP_MOVE( 15 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 20 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 25 , MOVE_SUPER_FANG), + LEVEL_UP_MOVE( 40 , MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRattchetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_SNATCH), + LEVEL_UP_MOVE( 13 , MOVE_HYPER_FANG), + LEVEL_UP_MOVE( 20 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 30 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 35 , MOVE_SUPER_FANG), + LEVEL_UP_MOVE( 40 , MOVE_POISON_FANG), + LEVEL_UP_MOVE( 50 , MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRattaruleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_SNATCH), + LEVEL_UP_MOVE( 13 , MOVE_HYPER_FANG), + LEVEL_UP_MOVE( 20 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 20 , MOVE_UPROAR), + LEVEL_UP_MOVE( 25 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 30 , MOVE_SUPER_FANG), + LEVEL_UP_MOVE( 40 , MOVE_POISON_FANG), + LEVEL_UP_MOVE( 40 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 50 , MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SPEAROW +static const struct LevelUpMove sSpearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 19 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 25 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 29 , MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE( 34 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 38 , MOVE_AGILITY), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 29 , MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE( 34 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 38 , MOVE_AGILITY), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSneerowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 29 , MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE( 30 , MOVE_TAUNT), + LEVEL_UP_MOVE( 34 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 38 , MOVE_AGILITY), + LEVEL_UP_MOVE( 44 , MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 49 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 55 , MOVE_BEAT_UP), + LEVEL_UP_MOVE( 59 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 64 , MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOrnithowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 29 , MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE( 30 , MOVE_TAUNT), + LEVEL_UP_MOVE( 34 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 38 , MOVE_AGILITY), + LEVEL_UP_MOVE( 44 , MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 49 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 55 , MOVE_BEAT_UP), + LEVEL_UP_MOVE( 59 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 64 , MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_EKANS +static const struct LevelUpMove sEkansLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 8 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 20 , MOVE_GLARE), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 32 , MOVE_POISON_FANG), + LEVEL_UP_MOVE( 37 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 37 , MOVE_SWALLOW), + LEVEL_UP_MOVE( 37 , MOVE_SPIT_UP), + LEVEL_UP_MOVE( 42 , MOVE_HAZE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArbokLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 8 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 20 , MOVE_GLARE), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 32 , MOVE_POISON_FANG), + LEVEL_UP_MOVE( 37 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 37 , MOVE_SWALLOW), + LEVEL_UP_MOVE( 37 , MOVE_SPIT_UP), + LEVEL_UP_MOVE( 44 , MOVE_HAZE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNohtypLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 8 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 20 , MOVE_GLARE), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 32 , MOVE_POISON_FANG), + LEVEL_UP_MOVE( 37 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 37 , MOVE_SWALLOW), + LEVEL_UP_MOVE( 37 , MOVE_SPIT_UP), + LEVEL_UP_MOVE( 44 , MOVE_HAZE), + LEVEL_UP_MOVE( 49 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 55 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 57 , MOVE_OUTRAGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAdnokanaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 8 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 20 , MOVE_GLARE), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 32 , MOVE_POISON_FANG), + LEVEL_UP_MOVE( 37 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 37 , MOVE_SWALLOW), + LEVEL_UP_MOVE( 37 , MOVE_SPIT_UP), + LEVEL_UP_MOVE( 44 , MOVE_HAZE), + LEVEL_UP_MOVE( 49 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 55 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 57 , MOVE_OUTRAGE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PIKACHU +static const struct LevelUpMove sPikachuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 6 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 11 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 20 , MOVE_SLAM), + LEVEL_UP_MOVE( 26 , MOVE_SPARK), + LEVEL_UP_MOVE( 33 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_THUNDER), + LEVEL_UP_MOVE( 42 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 47 , MOVE_THUNDERBOLT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRaichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 6 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 11 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 20 , MOVE_SLAM), + LEVEL_UP_MOVE( 26 , MOVE_SPARK), + LEVEL_UP_MOVE( 33 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_THUNDER), + LEVEL_UP_MOVE( 42 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 47 , MOVE_THUNDERBOLT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGorochuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 6 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 11 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 20 , MOVE_SLAM), + LEVEL_UP_MOVE( 26 , MOVE_SPARK), + LEVEL_UP_MOVE( 33 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_THUNDER), + LEVEL_UP_MOVE( 40 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 43 , MOVE_TORMENT), + LEVEL_UP_MOVE( 45 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 48 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 50 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 52 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 56 , MOVE_AURA_SPHERE), + LEVEL_UP_MOVE( 59 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 64 , MOVE_VOLT_TACKLE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sStromachuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 6 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 11 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 20 , MOVE_SLAM), + LEVEL_UP_MOVE( 26 , MOVE_SPARK), + LEVEL_UP_MOVE( 33 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_THUNDER), + LEVEL_UP_MOVE( 40 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 43 , MOVE_TORMENT), + LEVEL_UP_MOVE( 45 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 48 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 50 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 52 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 56 , MOVE_AURA_SPHERE), + LEVEL_UP_MOVE( 59 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 64 , MOVE_VOLT_TACKLE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SANDSHREW +static const struct LevelUpMove sSandshrewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 6 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 11 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 20 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 23 , MOVE_SLASH), + LEVEL_UP_MOVE( 30 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 34 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 46 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 50 , MOVE_GYRO_BALL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSandslashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 11 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 20 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 23 , MOVE_SLASH), + LEVEL_UP_MOVE( 30 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 34 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 42 , MOVE_SPIKES), + LEVEL_UP_MOVE( 46 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 50 , MOVE_GYRO_BALL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSandslamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 6 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 11 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 20 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 23 , MOVE_SLASH), + LEVEL_UP_MOVE( 30 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 31 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 34 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 42 , MOVE_SPIKES), + LEVEL_UP_MOVE( 46 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 48 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 50 , MOVE_GYRO_BALL), + LEVEL_UP_MOVE( 55 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 60 , MOVE_METAL_BURST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFerodilloLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 6 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 11 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 20 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 23 , MOVE_SLASH), + LEVEL_UP_MOVE( 30 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 31 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 34 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 42 , MOVE_SPIKES), + LEVEL_UP_MOVE( 46 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 48 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 50 , MOVE_GYRO_BALL), + LEVEL_UP_MOVE( 55 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 60 , MOVE_METAL_BURST), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_NIDORAN_F +static const struct LevelUpMove sNidoran_fLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_FLATTER), + LEVEL_UP_MOVE( 40 , MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidorinaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_FLATTER), + LEVEL_UP_MOVE( 40 , MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidoqueenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_FLATTER), + LEVEL_UP_MOVE( 40 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 44 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 49 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 55 , MOVE_THRASH), + LEVEL_UP_MOVE( 60 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 65 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 68 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidoregalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_FLATTER), + LEVEL_UP_MOVE( 40 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 44 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 49 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 55 , MOVE_THRASH), + LEVEL_UP_MOVE( 60 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 65 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 68 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidoarchyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_FLATTER), + LEVEL_UP_MOVE( 40 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 44 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 49 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 55 , MOVE_THRASH), + LEVEL_UP_MOVE( 60 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 65 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 68 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_NIDORAN_M +static const struct LevelUpMove sNidoran_mLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 40 , MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidorinoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 40 , MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidokingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 40 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 44 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 49 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 55 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 60 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 65 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 68 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidorulyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 40 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 44 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 49 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 55 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 60 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 65 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 68 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNidominateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 8 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 12 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 17 , MOVE_POISON_STING), + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_POISON_TAIL), + LEVEL_UP_MOVE( 30 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 34 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 38 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 40 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 44 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 49 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 55 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 60 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 65 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 68 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_CLEFAIRY +static const struct LevelUpMove sClefairyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_ENCORE), + LEVEL_UP_MOVE( 9 , MOVE_SING), + LEVEL_UP_MOVE( 13 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 17 , MOVE_FOLLOW_ME), + LEVEL_UP_MOVE( 20 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 25 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 29 , MOVE_METRONOME), + LEVEL_UP_MOVE( 33 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 39 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 41 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 45 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 50 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 54 , MOVE_WISH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sClefableLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_ENCORE), + LEVEL_UP_MOVE( 9 , MOVE_SING), + LEVEL_UP_MOVE( 13 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 17 , MOVE_FOLLOW_ME), + LEVEL_UP_MOVE( 20 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 25 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 29 , MOVE_METRONOME), + LEVEL_UP_MOVE( 33 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 39 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 41 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 45 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 50 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 54 , MOVE_WISH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sClefaefaeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_ENCORE), + LEVEL_UP_MOVE( 9 , MOVE_SING), + LEVEL_UP_MOVE( 13 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 17 , MOVE_FOLLOW_ME), + LEVEL_UP_MOVE( 20 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 25 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 29 , MOVE_METRONOME), + LEVEL_UP_MOVE( 33 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 39 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 41 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 45 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 50 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 54 , MOVE_WISH), + LEVEL_UP_MOVE( 59 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 65 , MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sClefanautLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_ENCORE), + LEVEL_UP_MOVE( 9 , MOVE_SING), + LEVEL_UP_MOVE( 13 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 17 , MOVE_FOLLOW_ME), + LEVEL_UP_MOVE( 20 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 25 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 29 , MOVE_METRONOME), + LEVEL_UP_MOVE( 33 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 39 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 41 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 45 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 50 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 54 , MOVE_WISH), + LEVEL_UP_MOVE( 59 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 65 , MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_VULPIX +static const struct LevelUpMove sVulpixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_ROAR), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 21 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 29 , MOVE_SWIFT), + LEVEL_UP_MOVE( 33 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 37 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 41 , MOVE_MORNING_SUN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNinetalesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_ROAR), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 21 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 29 , MOVE_SWIFT), + LEVEL_UP_MOVE( 33 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 37 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 40 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_MORNING_SUN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSpiritalesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_ROAR), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 21 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 29 , MOVE_SWIFT), + LEVEL_UP_MOVE( 33 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 37 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 40 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_MORNING_SUN), + LEVEL_UP_MOVE( 44 , MOVE_CURSE), + LEVEL_UP_MOVE( 49 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 56 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 60 , MOVE_BLAST_BURN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sYokayubiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_ROAR), + LEVEL_UP_MOVE( 13 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 17 , MOVE_WILL_O_WISP), + LEVEL_UP_MOVE( 21 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 29 , MOVE_SWIFT), + LEVEL_UP_MOVE( 33 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 37 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 40 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_MORNING_SUN), + LEVEL_UP_MOVE( 44 , MOVE_CURSE), + LEVEL_UP_MOVE( 49 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 56 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 60 , MOVE_BLAST_BURN), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_JIGGLYPUFF +static const struct LevelUpMove sJigglypuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 4 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9 , MOVE_POUND), + LEVEL_UP_MOVE( 14 , MOVE_DISABLE), + LEVEL_UP_MOVE( 19 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 24 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 34 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_MIMIC), + LEVEL_UP_MOVE( 44 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 49 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWigglytuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 4 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9 , MOVE_POUND), + LEVEL_UP_MOVE( 14 , MOVE_DISABLE), + LEVEL_UP_MOVE( 19 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 24 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 34 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_MIMIC), + LEVEL_UP_MOVE( 44 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 49 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGigglyhuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 4 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9 , MOVE_POUND), + LEVEL_UP_MOVE( 14 , MOVE_DISABLE), + LEVEL_UP_MOVE( 19 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 24 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 34 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_MIMIC), + LEVEL_UP_MOVE( 40 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 44 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 49 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_REFLECT), + LEVEL_UP_MOVE( 53 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 58 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 62 , MOVE_RECOVER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBogglyfuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 4 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9 , MOVE_POUND), + LEVEL_UP_MOVE( 14 , MOVE_DISABLE), + LEVEL_UP_MOVE( 19 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 24 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 34 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_MIMIC), + LEVEL_UP_MOVE( 40 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 44 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 49 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_REFLECT), + LEVEL_UP_MOVE( 53 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 58 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 62 , MOVE_RECOVER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_ZUBAT +static const struct LevelUpMove sZubatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 6 , MOVE_ASTONISH), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_BITE), + LEVEL_UP_MOVE( 21 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 31 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 36 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 43 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 46 , MOVE_HAZE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGolbatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 6 , MOVE_ASTONISH), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_BITE), + LEVEL_UP_MOVE( 21 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 31 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 36 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 43 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 46 , MOVE_HAZE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCrobatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 6 , MOVE_ASTONISH), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_BITE), + LEVEL_UP_MOVE( 21 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 31 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 36 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 43 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 46 , MOVE_HAZE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPolabatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 6 , MOVE_ASTONISH), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_BITE), + LEVEL_UP_MOVE( 21 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 31 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 36 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 46 , MOVE_TOXIC), + LEVEL_UP_MOVE( 43 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 46 , MOVE_HAZE), + LEVEL_UP_MOVE( 50 , MOVE_GLARE), + LEVEL_UP_MOVE( 55 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 60 , MOVE_BATON_PASS), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVisibatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 6 , MOVE_ASTONISH), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_BITE), + LEVEL_UP_MOVE( 21 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 31 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 36 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 46 , MOVE_TOXIC), + LEVEL_UP_MOVE( 43 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 46 , MOVE_HAZE), + LEVEL_UP_MOVE( 50 , MOVE_GLARE), + LEVEL_UP_MOVE( 55 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 60 , MOVE_BATON_PASS), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHorribatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 6 , MOVE_ASTONISH), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_BITE), + LEVEL_UP_MOVE( 21 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 31 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 36 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 46 , MOVE_TOXIC), + LEVEL_UP_MOVE( 43 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 46 , MOVE_HAZE), + LEVEL_UP_MOVE( 50 , MOVE_GLARE), + LEVEL_UP_MOVE( 55 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 60 , MOVE_BATON_PASS), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_ODDISH +static const struct LevelUpMove sOddishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 7 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 13 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 13 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 23 , MOVE_ACID), + LEVEL_UP_MOVE( 28 , MOVE_TOXIC), + LEVEL_UP_MOVE( 34 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 42 , MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 50 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 54 , MOVE_SOLARBEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SWIFT), + LEVEL_UP_MOVE( 7 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 13 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 13 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 23 , MOVE_ACID), + LEVEL_UP_MOVE( 28 , MOVE_TOXIC), + LEVEL_UP_MOVE( 34 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 42 , MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 50 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 54 , MOVE_SOLARBEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVileplumeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SWIFT), + LEVEL_UP_MOVE( 7 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 13 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 13 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 23 , MOVE_ACID), + LEVEL_UP_MOVE( 28 , MOVE_TOXIC), + LEVEL_UP_MOVE( 34 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 42 , MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 50 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 54 , MOVE_SOLARBEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRafflurkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SWIFT), + LEVEL_UP_MOVE( 7 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 13 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 13 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 23 , MOVE_ACID), + LEVEL_UP_MOVE( 28 , MOVE_TOXIC), + LEVEL_UP_MOVE( 34 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 42 , MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 50 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 54 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 57 , MOVE_SPORE), + LEVEL_UP_MOVE( 60 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 64 , MOVE_HAZE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sConcorpsiaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SWIFT), + LEVEL_UP_MOVE( 7 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 13 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 13 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 13 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 23 , MOVE_ACID), + LEVEL_UP_MOVE( 28 , MOVE_TOXIC), + LEVEL_UP_MOVE( 34 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 37 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 42 , MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 50 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 54 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 57 , MOVE_SPORE), + LEVEL_UP_MOVE( 60 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 64 , MOVE_HAZE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PARAS +static const struct LevelUpMove sParasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 7 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 7 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_SLASH), + LEVEL_UP_MOVE( 24 , MOVE_GROWTH), + LEVEL_UP_MOVE( 30 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 35 , MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 40 , MOVE_AROMATHERAPY), + LEVEL_UP_END +}; + +static const struct LevelUpMove sParasectLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 7 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_SLASH), + LEVEL_UP_MOVE( 24 , MOVE_GROWTH), + LEVEL_UP_MOVE( 30 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 35 , MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 40 , MOVE_AROMATHERAPY), + LEVEL_UP_MOVE( 44 , MOVE_SPORE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSectasiteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 7 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_SLASH), + LEVEL_UP_MOVE( 24 , MOVE_GROWTH), + LEVEL_UP_MOVE( 30 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 35 , MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 40 , MOVE_AROMATHERAPY), + LEVEL_UP_MOVE( 44 , MOVE_SPORE), + LEVEL_UP_MOVE( 48 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 52 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFungalithLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 7 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 15 , MOVE_SLASH), + LEVEL_UP_MOVE( 24 , MOVE_GROWTH), + LEVEL_UP_MOVE( 30 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 35 , MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 40 , MOVE_AROMATHERAPY), + LEVEL_UP_MOVE( 44 , MOVE_SPORE), + LEVEL_UP_MOVE( 48 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 52 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_VENONAT +static const struct LevelUpMove sVenonatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 1 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_BUG_BUZZ), + LEVEL_UP_MOVE( 28 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 36 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 41 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVenomothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SILVER_WIND), + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_BUG_BUZZ), + LEVEL_UP_MOVE( 28 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 36 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 41 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 47 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 53 , MOVE_SIGNAL_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVenomenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SILVER_WIND), + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_BUG_BUZZ), + LEVEL_UP_MOVE( 28 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 36 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 41 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 47 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 53 , MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE( 58 , MOVE_SHADOW_BALL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVenomenonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SILVER_WIND), + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_BUG_BUZZ), + LEVEL_UP_MOVE( 28 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 36 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 41 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 47 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 53 , MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE( 58 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 65 , MOVE_TAIL_GLOW), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_DIGLETT +static const struct LevelUpMove sDiglettLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 5 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 17 , MOVE_DIG), + LEVEL_UP_MOVE( 21 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 33 , MOVE_SLASH), + LEVEL_UP_MOVE( 40 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 45 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 48 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 52 , MOVE_FISSURE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDugtrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 17 , MOVE_DIG), + LEVEL_UP_MOVE( 21 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 26 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 35 , MOVE_SLASH), + LEVEL_UP_MOVE( 42 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 54 , MOVE_FISSURE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDugroupleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 17 , MOVE_DIG), + LEVEL_UP_MOVE( 21 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 26 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 35 , MOVE_SLASH), + LEVEL_UP_MOVE( 42 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 54 , MOVE_FISSURE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sUnearthletLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 17 , MOVE_DIG), + LEVEL_UP_MOVE( 21 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 26 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 35 , MOVE_SLASH), + LEVEL_UP_MOVE( 42 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 54 , MOVE_FISSURE), + LEVEL_UP_MOVE( 58 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 64 , MOVE_OUTRAGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDiglenoidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 17 , MOVE_DIG), + LEVEL_UP_MOVE( 21 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 26 , MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 35 , MOVE_SLASH), + LEVEL_UP_MOVE( 42 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 54 , MOVE_FISSURE), + LEVEL_UP_MOVE( 58 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 60 , MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 64 , MOVE_OUTRAGE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MEOWTH +static const struct LevelUpMove sMeowthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 10 , MOVE_BITE), + LEVEL_UP_MOVE( 14 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 19 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 40 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 45 , MOVE_SWAGGER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPersianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 10 , MOVE_BITE), + LEVEL_UP_MOVE( 14 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 19 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 40 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 45 , MOVE_SWAGGER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFelankhLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 10 , MOVE_BITE), + LEVEL_UP_MOVE( 14 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 19 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 40 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 43 , MOVE_COUNTER), + LEVEL_UP_MOVE( 45 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 51 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPatraphinxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 10 , MOVE_BITE), + LEVEL_UP_MOVE( 14 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 19 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 40 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 43 , MOVE_COUNTER), + LEVEL_UP_MOVE( 45 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 51 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 55 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 60 , MOVE_SECRET_POWER), + LEVEL_UP_MOVE( 68 , MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PSYDUCK +static const struct LevelUpMove sPsyduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 11 , MOVE_DISABLE), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 31 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 33 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGolduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 11 , MOVE_DISABLE), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 31 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 33 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGilduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 11 , MOVE_DISABLE), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 31 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 33 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 45 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 51 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPlatinupusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_SCRATCH), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 11 , MOVE_DISABLE), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 20 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 25 , MOVE_SCREECH), + LEVEL_UP_MOVE( 31 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 33 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 40 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 45 , MOVE_FEATHERDANCE), + LEVEL_UP_MOVE( 51 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 56 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 60 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 65 , MOVE_COUNTER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMankeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 6 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 11 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 16 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 26 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 31 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 36 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 41 , MOVE_SCREECH), + LEVEL_UP_MOVE( 46 , MOVE_THRASH), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PRIMEAPE +static const struct LevelUpMove sPrimeapeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1 , MOVE_RAGE), + LEVEL_UP_MOVE( 6 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 11 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 16 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 26 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 28 , MOVE_RAGE), + LEVEL_UP_MOVE( 31 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 36 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 41 , MOVE_SCREECH), + LEVEL_UP_MOVE( 46 , MOVE_THRASH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGorillashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1 , MOVE_RAGE), + LEVEL_UP_MOVE( 6 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 11 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 16 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 26 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 28 , MOVE_RAGE), + LEVEL_UP_MOVE( 31 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 36 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 41 , MOVE_SCREECH), + LEVEL_UP_MOVE( 46 , MOVE_THRASH), + LEVEL_UP_MOVE( 50 , MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE( 55 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 59 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 64 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBonumbellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1 , MOVE_RAGE), + LEVEL_UP_MOVE( 6 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 11 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 16 , MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 26 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 28 , MOVE_RAGE), + LEVEL_UP_MOVE( 31 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 36 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 41 , MOVE_SCREECH), + LEVEL_UP_MOVE( 46 , MOVE_THRASH), + LEVEL_UP_MOVE( 50 , MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE( 52 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 55 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 59 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 64 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_GROWLITHE +static const struct LevelUpMove sGrowlitheLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_ROAR), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_LEER), + LEVEL_UP_MOVE( 19 , MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 25 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 31 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 37 , MOVE_AGILITY), + LEVEL_UP_MOVE( 40 , MOVE_BLAZE_KICK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArcanineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_ROAR), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_LEER), + LEVEL_UP_MOVE( 19 , MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 25 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 31 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 37 , MOVE_AGILITY), + LEVEL_UP_MOVE( 40 , MOVE_BLAZE_KICK), + LEVEL_UP_MOVE( 45 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 49 , MOVE_SLASH), + LEVEL_UP_MOVE( 70 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSingeshaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_ROAR), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_LEER), + LEVEL_UP_MOVE( 19 , MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 25 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 31 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 37 , MOVE_AGILITY), + LEVEL_UP_MOVE( 40 , MOVE_BLAZE_KICK), + LEVEL_UP_MOVE( 45 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 49 , MOVE_SLASH), + LEVEL_UP_MOVE( 53 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 70 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGuardianceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_ROAR), + LEVEL_UP_MOVE( 7 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_LEER), + LEVEL_UP_MOVE( 19 , MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 25 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 31 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 37 , MOVE_AGILITY), + LEVEL_UP_MOVE( 40 , MOVE_BLAZE_KICK), + LEVEL_UP_MOVE( 45 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 49 , MOVE_SLASH), + LEVEL_UP_MOVE( 53 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 60 , MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 64 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 68 , MOVE_OUTRAGE), + LEVEL_UP_MOVE( 75 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_POLIWAG +static const struct LevelUpMove sPoliwagLevelUpLearnset[] = { + LEVEL_UP_MOVE( 7 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 29 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 34 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 38 , MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPoliwhirlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 29 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 34 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 38 , MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPoliwrathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 29 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 34 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 36 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 42 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 47 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 49 , MOVE_MEGA_PUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPolitoesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 29 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 34 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 36 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 42 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 47 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 49 , MOVE_MEGA_PUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPoliwiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 29 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 34 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 36 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 42 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 47 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 49 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 55 , MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 60 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPoliathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 19 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 29 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 34 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 36 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 42 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 47 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 49 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 55 , MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 60 , MOVE_SUPERPOWER), + LEVEL_UP_MOVE( 65 , MOVE_MEGA_KICK), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_ABRA +static const struct LevelUpMove sAbraLevelUpLearnset[] = { + LEVEL_UP_END +}; + +static const struct LevelUpMove sKadabraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_KINESIS), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 18 , MOVE_DISABLE), + LEVEL_UP_MOVE( 21 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 23 , MOVE_REFLECT), + LEVEL_UP_MOVE( 25 , MOVE_RECOVER), + LEVEL_UP_MOVE( 30 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 33 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 36 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_TRICK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAlakazamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_KINESIS), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 18 , MOVE_DISABLE), + LEVEL_UP_MOVE( 21 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 23 , MOVE_REFLECT), + LEVEL_UP_MOVE( 25 , MOVE_RECOVER), + LEVEL_UP_MOVE( 30 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 33 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 36 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_TRICK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSimsalabimLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_KINESIS), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 18 , MOVE_DISABLE), + LEVEL_UP_MOVE( 21 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 23 , MOVE_REFLECT), + LEVEL_UP_MOVE( 25 , MOVE_RECOVER), + LEVEL_UP_MOVE( 30 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 33 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 36 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_TRICK), + LEVEL_UP_MOVE( 44 , MOVE_SHADOW_BALL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVohooduLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_KINESIS), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 18 , MOVE_DISABLE), + LEVEL_UP_MOVE( 21 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 23 , MOVE_REFLECT), + LEVEL_UP_MOVE( 25 , MOVE_RECOVER), + LEVEL_UP_MOVE( 30 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 33 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 36 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_TRICK), + LEVEL_UP_MOVE( 42 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 44 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 53 , MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 55 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 55 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 55 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 59 , MOVE_DARK_PULSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTzarkartzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_KINESIS), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 16 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 18 , MOVE_DISABLE), + LEVEL_UP_MOVE( 21 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 23 , MOVE_REFLECT), + LEVEL_UP_MOVE( 25 , MOVE_RECOVER), + LEVEL_UP_MOVE( 30 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 33 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 36 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_TRICK), + LEVEL_UP_MOVE( 42 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 44 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 53 , MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 55 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 55 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 55 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 59 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 63 , MOVE_MUDDY_WATER), + LEVEL_UP_MOVE( 68 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MACHOP +static const struct LevelUpMove sMachopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 7 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 13 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 19 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 22 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 37 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 40 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 43 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 49 , MOVE_DYNAMICPUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMachokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 7 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 13 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 19 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 22 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 37 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 40 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 43 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 49 , MOVE_DYNAMICPUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMachampLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 7 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 13 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 19 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 22 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 37 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 40 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 43 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 49 , MOVE_DYNAMICPUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMachulkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 7 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 13 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 19 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 22 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 37 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 40 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 43 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 49 , MOVE_DYNAMICPUNCH), + LEVEL_UP_MOVE( 52 , MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAbomachulkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 7 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 13 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 19 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 22 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 37 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 40 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 43 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 49 , MOVE_DYNAMICPUNCH), + LEVEL_UP_MOVE( 52 , MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 55 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 58 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 63 , MOVE_IRON_HEAD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMachitanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 7 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 13 , MOVE_KARATE_CHOP), + LEVEL_UP_MOVE( 19 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 22 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 37 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 40 , MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 43 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 49 , MOVE_DYNAMICPUNCH), + LEVEL_UP_MOVE( 52 , MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 55 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 58 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 63 , MOVE_IRON_HEAD), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_BELLSPROUT +static const struct LevelUpMove sBellsproutLevelUpLearnset[] = { + LEVEL_UP_MOVE( 6 , MOVE_GROWTH), + LEVEL_UP_MOVE( 11 , MOVE_WRAP), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 20 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 25 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 30 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 34 , MOVE_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_TOXIC), + LEVEL_UP_MOVE( 44 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 50 , MOVE_INGRAIN), + LEVEL_UP_MOVE( 60 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWeepinbellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWTH), + LEVEL_UP_MOVE( 1 , MOVE_WRAP), + LEVEL_UP_MOVE( 6 , MOVE_GROWTH), + LEVEL_UP_MOVE( 11 , MOVE_WRAP), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 20 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 25 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 30 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 34 , MOVE_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_TOXIC), + LEVEL_UP_MOVE( 44 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 50 , MOVE_INGRAIN), + LEVEL_UP_MOVE( 60 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVictreebelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWTH), + LEVEL_UP_MOVE( 1 , MOVE_WRAP), + LEVEL_UP_MOVE( 6 , MOVE_GROWTH), + LEVEL_UP_MOVE( 11 , MOVE_WRAP), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 20 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 25 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 30 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 34 , MOVE_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_TOXIC), + LEVEL_UP_MOVE( 44 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 50 , MOVE_INGRAIN), + LEVEL_UP_MOVE( 60 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMucktribelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWTH), + LEVEL_UP_MOVE( 1 , MOVE_WRAP), + LEVEL_UP_MOVE( 6 , MOVE_GROWTH), + LEVEL_UP_MOVE( 11 , MOVE_WRAP), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 20 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 25 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 30 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 34 , MOVE_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_TOXIC), + LEVEL_UP_MOVE( 44 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 50 , MOVE_INGRAIN), + LEVEL_UP_MOVE( 60 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCarnabellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWTH), + LEVEL_UP_MOVE( 1 , MOVE_WRAP), + LEVEL_UP_MOVE( 6 , MOVE_GROWTH), + LEVEL_UP_MOVE( 11 , MOVE_WRAP), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 20 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 25 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 30 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 34 , MOVE_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_TOXIC), + LEVEL_UP_MOVE( 44 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 50 , MOVE_INGRAIN), + LEVEL_UP_MOVE( 60 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDevloraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWTH), + LEVEL_UP_MOVE( 1 , MOVE_WRAP), + LEVEL_UP_MOVE( 6 , MOVE_GROWTH), + LEVEL_UP_MOVE( 11 , MOVE_WRAP), + LEVEL_UP_MOVE( 15 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 15 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 20 , MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 25 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 30 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 34 , MOVE_SLAM), + LEVEL_UP_MOVE( 39 , MOVE_TOXIC), + LEVEL_UP_MOVE( 44 , MOVE_PETAL_DANCE), + LEVEL_UP_MOVE( 50 , MOVE_INGRAIN), + LEVEL_UP_MOVE( 60 , MOVE_FRENZY_PLANT), + LEVEL_UP_MOVE( 65 , MOVE_MEGAHORN), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_TENTACOOL +static const struct LevelUpMove sTentacoolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 6 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 12 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 19 , MOVE_ACID), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_WRAP), + LEVEL_UP_MOVE( 36 , MOVE_BARRIER), + LEVEL_UP_MOVE( 38 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 45 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTentacruelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 12 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 19 , MOVE_ACID), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_WRAP), + LEVEL_UP_MOVE( 38 , MOVE_BARRIER), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTentacateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 12 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 19 , MOVE_ACID), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_WRAP), + LEVEL_UP_MOVE( 38 , MOVE_BARRIER), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 57 , MOVE_DRAGONBREATH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTentabomaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 12 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 19 , MOVE_ACID), + LEVEL_UP_MOVE( 25 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_WRAP), + LEVEL_UP_MOVE( 38 , MOVE_BARRIER), + LEVEL_UP_MOVE( 47 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 57 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 65 , MOVE_OUTRAGE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_GEODUDE +static const struct LevelUpMove sGeodudeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 11 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 16 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 21 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 24 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 30 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 36 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 40 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 48 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGravelerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 11 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 16 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 21 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 24 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 30 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 36 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 40 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 48 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGolemLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 11 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 16 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 21 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 24 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 30 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 36 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 40 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 48 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSlagolemLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 11 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 16 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 21 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 24 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 30 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 36 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 40 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 48 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 58 , MOVE_CURSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMoltremLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 11 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 16 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 21 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 24 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 30 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 36 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 40 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 48 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 58 , MOVE_CURSE), + LEVEL_UP_MOVE( 65 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVolcanicolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6 , MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 11 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 16 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 21 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 24 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 30 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 36 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 40 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 48 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 58 , MOVE_CURSE), + LEVEL_UP_MOVE( 65 , MOVE_SACRED_FIRE), + LEVEL_UP_MOVE( 70 , MOVE_ERUPTION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PONYTA +static const struct LevelUpMove sPonytaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_EMBER), + LEVEL_UP_MOVE( 14 , MOVE_ROAR), + LEVEL_UP_MOVE( 19 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 25 , MOVE_STOMP), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 34 , MOVE_AGILITY), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 43 , MOVE_BLAZE_KICK), + LEVEL_UP_MOVE( 60 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRapidashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_EMBER), + LEVEL_UP_MOVE( 14 , MOVE_ROAR), + LEVEL_UP_MOVE( 19 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 25 , MOVE_STOMP), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 34 , MOVE_AGILITY), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 43 , MOVE_BLAZE_KICK), + LEVEL_UP_MOVE( 60 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCombustangLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_EMBER), + LEVEL_UP_MOVE( 14 , MOVE_ROAR), + LEVEL_UP_MOVE( 19 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 25 , MOVE_STOMP), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 34 , MOVE_AGILITY), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 43 , MOVE_BLAZE_KICK), + LEVEL_UP_MOVE( 48 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 52 , MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE( 57 , MOVE_FACADE), + LEVEL_UP_MOVE( 65 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKnightmareLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_EMBER), + LEVEL_UP_MOVE( 14 , MOVE_ROAR), + LEVEL_UP_MOVE( 19 , MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 25 , MOVE_STOMP), + LEVEL_UP_MOVE( 30 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 34 , MOVE_AGILITY), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 39 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 43 , MOVE_BLAZE_KICK), + LEVEL_UP_MOVE( 48 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 52 , MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE( 57 , MOVE_FACADE), + LEVEL_UP_MOVE( 61 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 65 , MOVE_SACRED_FIRE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SLOWPOKE +static const struct LevelUpMove sSlowpokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_YAWN), + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 6 , MOVE_GROWL), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 21 , MOVE_DISABLE), + LEVEL_UP_MOVE( 24 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 29 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 34 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 39 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 42 , MOVE_PSYCH_UP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSlowbroLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_YAWN), + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 6 , MOVE_GROWL), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 21 , MOVE_DISABLE), + LEVEL_UP_MOVE( 24 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 29 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 34 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 39 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 42 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSlowmateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_YAWN), + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 6 , MOVE_GROWL), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 21 , MOVE_DISABLE), + LEVEL_UP_MOVE( 24 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 29 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 34 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 39 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 42 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 46 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 60 , MOVE_SHADOW_BALL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSlowchumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_YAWN), + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 6 , MOVE_GROWL), + LEVEL_UP_MOVE( 13 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 17 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 21 , MOVE_DISABLE), + LEVEL_UP_MOVE( 24 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 29 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 34 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 39 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 42 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 46 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 60 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 65 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 68 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MAGNEMITE +static const struct LevelUpMove sMagnemiteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 6 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 26 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 38 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_SCREECH), + LEVEL_UP_MOVE( 50 , MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMagnetonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 23 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 38 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_SCREECH), + LEVEL_UP_MOVE( 50 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 54 , MOVE_THUNDERBOLT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMagnezoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 23 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 38 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_SCREECH), + LEVEL_UP_MOVE( 50 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 54 , MOVE_THUNDERBOLT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMagnemeldLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 23 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 38 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_SCREECH), + LEVEL_UP_MOVE( 50 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 54 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 59 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 65 , MOVE_OVERHEAT), + LEVEL_UP_MOVE( 69 , MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMagnemastrLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 11 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 16 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 23 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 26 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 38 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_SCREECH), + LEVEL_UP_MOVE( 50 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 54 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 59 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 65 , MOVE_OVERHEAT), + LEVEL_UP_MOVE( 69 , MOVE_THUNDER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_FARFETCHD +static const struct LevelUpMove sFarfetchdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 6 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 11 , MOVE_LEER), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 20 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 26 , MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 31 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 41 , MOVE_SLASH), + LEVEL_UP_MOVE( 46 , MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sForfowldLevelUpLearnset[] = { + LEVEL_UP_MOVE( 6 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 11 , MOVE_LEER), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 20 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 26 , MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 31 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 41 , MOVE_SLASH), + LEVEL_UP_MOVE( 46 , MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFowlntomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 6 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 11 , MOVE_LEER), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_AERIAL_ACE), + LEVEL_UP_MOVE( 20 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 26 , MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 31 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 35 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 41 , MOVE_SLASH), + LEVEL_UP_MOVE( 46 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 50 , MOVE_CURSE), + LEVEL_UP_MOVE( 55 , MOVE_PERISH_SONG), + LEVEL_UP_MOVE( 59 , MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_DODUO +static const struct LevelUpMove sDoduoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 21 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE( 33 , MOVE_UPROAR), + LEVEL_UP_MOVE( 37 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 40 , MOVE_AGILITY), + LEVEL_UP_MOVE( 44 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 50 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 55 , MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDodrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 21 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE( 33 , MOVE_UPROAR), + LEVEL_UP_MOVE( 37 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 40 , MOVE_AGILITY), + LEVEL_UP_MOVE( 44 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 50 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 55 , MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sQuadodoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 9 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 21 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE( 33 , MOVE_UPROAR), + LEVEL_UP_MOVE( 37 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 40 , MOVE_AGILITY), + LEVEL_UP_MOVE( 44 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 50 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 55 , MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDodozenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 9 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 13 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 21 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 25 , MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE( 33 , MOVE_UPROAR), + LEVEL_UP_MOVE( 37 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 40 , MOVE_AGILITY), + LEVEL_UP_MOVE( 44 , MOVE_BOUNCE), + LEVEL_UP_MOVE( 50 , MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 55 , MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE( 60 , MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 63 , MOVE_BRAVE_BIRD), + LEVEL_UP_MOVE( 68 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 70 , MOVE_BLAZE_KICK), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SEEL +static const struct LevelUpMove sSeelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 9 , MOVE_GROWL), + LEVEL_UP_MOVE( 17 , MOVE_ICY_WIND), + LEVEL_UP_MOVE( 21 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 25 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 37 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 41 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 49 , MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDewgongLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 1 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 1 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GROWL), + LEVEL_UP_MOVE( 17 , MOVE_ICY_WIND), + LEVEL_UP_MOVE( 21 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 25 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 27 , MOVE_ENCORE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 34 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 40 , MOVE_MAGIC_COAT), + LEVEL_UP_MOVE( 40 , MOVE_HAIL), + LEVEL_UP_MOVE( 40 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 42 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 51 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 52 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 60 , MOVE_SUBSTITUTE), + LEVEL_UP_MOVE( 64 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 65 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPrecipedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 1 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 1 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GROWL), + LEVEL_UP_MOVE( 17 , MOVE_ICY_WIND), + LEVEL_UP_MOVE( 21 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 25 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 27 , MOVE_ENCORE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 34 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 40 , MOVE_MAGIC_COAT), + LEVEL_UP_MOVE( 40 , MOVE_HAIL), + LEVEL_UP_MOVE( 40 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 42 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 51 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 52 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 60 , MOVE_SUBSTITUTE), + LEVEL_UP_MOVE( 64 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 65 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sManatiiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 1 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 1 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 9 , MOVE_GROWL), + LEVEL_UP_MOVE( 17 , MOVE_ICY_WIND), + LEVEL_UP_MOVE( 21 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 25 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 27 , MOVE_ENCORE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 29 , MOVE_REST), + LEVEL_UP_MOVE( 34 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 40 , MOVE_MAGIC_COAT), + LEVEL_UP_MOVE( 40 , MOVE_HAIL), + LEVEL_UP_MOVE( 40 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 42 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 51 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 52 , MOVE_CALM_MIND), + LEVEL_UP_MOVE( 60 , MOVE_SUBSTITUTE), + LEVEL_UP_MOVE( 64 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 65 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_GRIMER +static const struct LevelUpMove sGrimerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POUND), + LEVEL_UP_MOVE( 4 , MOVE_HARDEN), + LEVEL_UP_MOVE( 8 , MOVE_DISABLE), + LEVEL_UP_MOVE( 13 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 19 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 24 , MOVE_SCREECH), + LEVEL_UP_MOVE( 29 , MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 33 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 50 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMukLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POUND), + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 4 , MOVE_HARDEN), + LEVEL_UP_MOVE( 8 , MOVE_DISABLE), + LEVEL_UP_MOVE( 13 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 19 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 24 , MOVE_SCREECH), + LEVEL_UP_MOVE( 29 , MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 33 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 35 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 39 , MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE( 50 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGunkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POUND), + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 4 , MOVE_HARDEN), + LEVEL_UP_MOVE( 8 , MOVE_DISABLE), + LEVEL_UP_MOVE( 13 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 19 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 24 , MOVE_SCREECH), + LEVEL_UP_MOVE( 29 , MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 33 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 35 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 39 , MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE( 45 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 50 , MOVE_MEMENTO), + LEVEL_UP_MOVE( 54 , MOVE_TOXIC), + LEVEL_UP_MOVE( 60 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 65 , MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSkumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POUND), + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 4 , MOVE_HARDEN), + LEVEL_UP_MOVE( 8 , MOVE_DISABLE), + LEVEL_UP_MOVE( 13 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 19 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 24 , MOVE_SCREECH), + LEVEL_UP_MOVE( 29 , MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 33 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 35 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 39 , MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE( 45 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 50 , MOVE_MEMENTO), + LEVEL_UP_MOVE( 54 , MOVE_TOXIC), + LEVEL_UP_MOVE( 60 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 65 , MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SHELLDER +static const struct LevelUpMove sShellderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 8 , MOVE_ICICLE_SPEAR), + LEVEL_UP_MOVE( 15 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 22 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 29 , MOVE_PROTECT), + LEVEL_UP_MOVE( 36 , MOVE_ICE_FANG), + LEVEL_UP_MOVE( 40 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 45 , MOVE_CLAMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCloysterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 8 , MOVE_ICICLE_SPEAR), + LEVEL_UP_MOVE( 15 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 22 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 29 , MOVE_PROTECT), + LEVEL_UP_MOVE( 36 , MOVE_ICE_FANG), + LEVEL_UP_MOVE( 40 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 43 , MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE( 48 , MOVE_CLAMP), + LEVEL_UP_MOVE( 53 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 59 , MOVE_CRUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAnenemyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 8 , MOVE_ICICLE_SPEAR), + LEVEL_UP_MOVE( 15 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 22 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 29 , MOVE_PROTECT), + LEVEL_UP_MOVE( 36 , MOVE_ICE_FANG), + LEVEL_UP_MOVE( 40 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 43 , MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE( 48 , MOVE_CLAMP), + LEVEL_UP_MOVE( 53 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 59 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 65 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 68 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGlaishellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 8 , MOVE_ICICLE_SPEAR), + LEVEL_UP_MOVE( 15 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 22 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 29 , MOVE_PROTECT), + LEVEL_UP_MOVE( 36 , MOVE_ICE_FANG), + LEVEL_UP_MOVE( 40 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 43 , MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE( 48 , MOVE_CLAMP), + LEVEL_UP_MOVE( 53 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 59 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 65 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 68 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_GASTLY +static const struct LevelUpMove sGastlyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 8 , MOVE_SPITE), + LEVEL_UP_MOVE( 13 , MOVE_CURSE), + LEVEL_UP_MOVE( 16 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 21 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_DREAM_EATER), + LEVEL_UP_MOVE( 28 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 30 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 35 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_NIGHTMARE), + LEVEL_UP_MOVE( 48 , MOVE_MEAN_LOOK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHaunterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_SPITE), + LEVEL_UP_MOVE( 8 , MOVE_SPITE), + LEVEL_UP_MOVE( 13 , MOVE_CURSE), + LEVEL_UP_MOVE( 16 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 21 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_DREAM_EATER), + LEVEL_UP_MOVE( 28 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 30 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 32 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 35 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_NIGHTMARE), + LEVEL_UP_MOVE( 48 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 50 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 55 , MOVE_GLARE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGengarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_SPITE), + LEVEL_UP_MOVE( 8 , MOVE_SPITE), + LEVEL_UP_MOVE( 13 , MOVE_CURSE), + LEVEL_UP_MOVE( 16 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 21 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_DREAM_EATER), + LEVEL_UP_MOVE( 28 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 30 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 32 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 35 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_NIGHTMARE), + LEVEL_UP_MOVE( 48 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 50 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 55 , MOVE_GLARE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGengoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_SPITE), + LEVEL_UP_MOVE( 8 , MOVE_SPITE), + LEVEL_UP_MOVE( 13 , MOVE_CURSE), + LEVEL_UP_MOVE( 16 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 21 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_DREAM_EATER), + LEVEL_UP_MOVE( 28 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 30 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 32 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 35 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_NIGHTMARE), + LEVEL_UP_MOVE( 48 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 50 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 55 , MOVE_GLARE), + LEVEL_UP_MOVE( 61 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPoltergastLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_SPITE), + LEVEL_UP_MOVE( 8 , MOVE_SPITE), + LEVEL_UP_MOVE( 13 , MOVE_CURSE), + LEVEL_UP_MOVE( 16 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 21 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_DREAM_EATER), + LEVEL_UP_MOVE( 28 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 30 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 32 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 35 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_NIGHTMARE), + LEVEL_UP_MOVE( 48 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 50 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 55 , MOVE_GLARE), + LEVEL_UP_MOVE( 61 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGrimmLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_SPITE), + LEVEL_UP_MOVE( 8 , MOVE_SPITE), + LEVEL_UP_MOVE( 13 , MOVE_CURSE), + LEVEL_UP_MOVE( 16 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 21 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_DREAM_EATER), + LEVEL_UP_MOVE( 28 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 30 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 32 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 35 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 41 , MOVE_NIGHTMARE), + LEVEL_UP_MOVE( 48 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 50 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 55 , MOVE_GLARE), + LEVEL_UP_MOVE( 61 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 66 , MOVE_TORMENT), + LEVEL_UP_MOVE( 70 , MOVE_CALM_MIND), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_ONIX +static const struct LevelUpMove sOnixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCREECH), + LEVEL_UP_MOVE( 8 , MOVE_BIND), + LEVEL_UP_MOVE( 12 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 23 , MOVE_RAGE), + LEVEL_UP_MOVE( 28 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 34 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 38 , MOVE_SLAM), + LEVEL_UP_MOVE( 43 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 47 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 51 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 56 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSteelixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCREECH), + LEVEL_UP_MOVE( 8 , MOVE_BIND), + LEVEL_UP_MOVE( 12 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 23 , MOVE_RAGE), + LEVEL_UP_MOVE( 28 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 30 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 34 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 38 , MOVE_SLAM), + LEVEL_UP_MOVE( 43 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 47 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 51 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 56 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPlatnixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCREECH), + LEVEL_UP_MOVE( 8 , MOVE_BIND), + LEVEL_UP_MOVE( 12 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 23 , MOVE_RAGE), + LEVEL_UP_MOVE( 28 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 30 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 34 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 38 , MOVE_SLAM), + LEVEL_UP_MOVE( 43 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 47 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 51 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 56 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 60 , MOVE_CURSE), + LEVEL_UP_MOVE( 65 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sObsidianixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCREECH), + LEVEL_UP_MOVE( 8 , MOVE_BIND), + LEVEL_UP_MOVE( 12 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 23 , MOVE_RAGE), + LEVEL_UP_MOVE( 28 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 30 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 34 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 38 , MOVE_SLAM), + LEVEL_UP_MOVE( 43 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 47 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 51 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 56 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 60 , MOVE_CURSE), + LEVEL_UP_MOVE( 65 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sStalagmixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SCREECH), + LEVEL_UP_MOVE( 8 , MOVE_BIND), + LEVEL_UP_MOVE( 12 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 23 , MOVE_RAGE), + LEVEL_UP_MOVE( 28 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 30 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 34 , MOVE_SANDSTORM), + LEVEL_UP_MOVE( 38 , MOVE_SLAM), + LEVEL_UP_MOVE( 43 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 47 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 51 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 56 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 60 , MOVE_CURSE), + LEVEL_UP_MOVE( 65 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 70 , MOVE_METAL_BURST), + LEVEL_UP_MOVE( 75 , MOVE_OUTRAGE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_DROWZEE +static const struct LevelUpMove sDrowzeeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_DISABLE), + LEVEL_UP_MOVE( 11 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_POISON_GAS), + LEVEL_UP_MOVE( 27 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 31 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 37 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 41 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 47 , MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHypnoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POUND), + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 7 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 7 , MOVE_DISABLE), + LEVEL_UP_MOVE( 11 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_POISON_GAS), + LEVEL_UP_MOVE( 29 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 35 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 41 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 43 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 49 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 50 , MOVE_DETECT), + LEVEL_UP_MOVE( 55 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 55 , MOVE_SKILL_SWAP), + LEVEL_UP_MOVE( 57 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 60 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 63 , MOVE_SPITE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLullooLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POUND), + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 7 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 7 , MOVE_DISABLE), + LEVEL_UP_MOVE( 11 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_POISON_GAS), + LEVEL_UP_MOVE( 29 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 35 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 41 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 43 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 49 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 50 , MOVE_DETECT), + LEVEL_UP_MOVE( 55 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 55 , MOVE_SKILL_SWAP), + LEVEL_UP_MOVE( 57 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 60 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 63 , MOVE_SPITE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSomnisoothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POUND), + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 1 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 7 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 7 , MOVE_DISABLE), + LEVEL_UP_MOVE( 11 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 17 , MOVE_SWIFT), + LEVEL_UP_MOVE( 21 , MOVE_POISON_GAS), + LEVEL_UP_MOVE( 29 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 35 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 41 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 43 , MOVE_PSYCH_UP), + LEVEL_UP_MOVE( 49 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 50 , MOVE_DETECT), + LEVEL_UP_MOVE( 55 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 55 , MOVE_SKILL_SWAP), + LEVEL_UP_MOVE( 57 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 60 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 63 , MOVE_SPITE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_KRABBY +static const struct LevelUpMove sKrabbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_LEER), + LEVEL_UP_MOVE( 12 , MOVE_VICEGRIP), + LEVEL_UP_MOVE( 16 , MOVE_HARDEN), + LEVEL_UP_MOVE( 19 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 23 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 27 , MOVE_STOMP), + LEVEL_UP_MOVE( 34 , MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 38 , MOVE_PROTECT), + LEVEL_UP_MOVE( 45 , MOVE_CRABHAMMER), + LEVEL_UP_MOVE( 49 , MOVE_FLAIL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKinglerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_VICEGRIP), + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 5 , MOVE_LEER), + LEVEL_UP_MOVE( 12 , MOVE_VICEGRIP), + LEVEL_UP_MOVE( 16 , MOVE_HARDEN), + LEVEL_UP_MOVE( 19 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 23 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 27 , MOVE_STOMP), + LEVEL_UP_MOVE( 30 , MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 35 , MOVE_PROTECT), + LEVEL_UP_MOVE( 40 , MOVE_CRABHAMMER), + LEVEL_UP_MOVE( 50 , MOVE_FLAIL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKraklawLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_VICEGRIP), + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 5 , MOVE_LEER), + LEVEL_UP_MOVE( 12 , MOVE_VICEGRIP), + LEVEL_UP_MOVE( 16 , MOVE_HARDEN), + LEVEL_UP_MOVE( 19 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 23 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 27 , MOVE_STOMP), + LEVEL_UP_MOVE( 30 , MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 35 , MOVE_PROTECT), + LEVEL_UP_MOVE( 40 , MOVE_CRABHAMMER), + LEVEL_UP_MOVE( 45 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 50 , MOVE_FLAIL), + LEVEL_UP_MOVE( 56 , MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTeklawnoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1 , MOVE_BUBBLE), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_VICEGRIP), + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 5 , MOVE_LEER), + LEVEL_UP_MOVE( 12 , MOVE_VICEGRIP), + LEVEL_UP_MOVE( 16 , MOVE_HARDEN), + LEVEL_UP_MOVE( 19 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 23 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 27 , MOVE_STOMP), + LEVEL_UP_MOVE( 30 , MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 35 , MOVE_PROTECT), + LEVEL_UP_MOVE( 40 , MOVE_CRABHAMMER), + LEVEL_UP_MOVE( 45 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 50 , MOVE_FLAIL), + LEVEL_UP_MOVE( 56 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 60 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 65 , MOVE_ERUPTION), + LEVEL_UP_MOVE( 70 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_VOLTORB +static const struct LevelUpMove sVoltorbLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 8 , MOVE_SCREECH), + LEVEL_UP_MOVE( 15 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 27 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 32 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 37 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 42 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 46 , MOVE_SWIFT), + LEVEL_UP_MOVE( 49 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 57 , MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectrodeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 8 , MOVE_SCREECH), + LEVEL_UP_MOVE( 15 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 27 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 32 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 37 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 42 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 46 , MOVE_SWIFT), + LEVEL_UP_MOVE( 49 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 57 , MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectrodesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 8 , MOVE_SCREECH), + LEVEL_UP_MOVE( 15 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 27 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 32 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 37 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 42 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 46 , MOVE_SWIFT), + LEVEL_UP_MOVE( 49 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 53 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 57 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 60 , MOVE_OVERHEAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectrodexLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 8 , MOVE_SCREECH), + LEVEL_UP_MOVE( 15 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 27 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 32 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 37 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 42 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 46 , MOVE_SWIFT), + LEVEL_UP_MOVE( 49 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 53 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 57 , MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectrodemLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 8 , MOVE_SCREECH), + LEVEL_UP_MOVE( 15 , MOVE_SONICBOOM), + LEVEL_UP_MOVE( 21 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 27 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 32 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 37 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 42 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 46 , MOVE_SWIFT), + LEVEL_UP_MOVE( 49 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 53 , MOVE_HYPER_VOICE), + LEVEL_UP_MOVE( 57 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 62 , MOVE_OVERHEAT), + LEVEL_UP_MOVE( 75 , MOVE_MIST_BALL), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_EXEGGCUTE +static const struct LevelUpMove sExeggcuteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_UPROAR), + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_REFLECT), + LEVEL_UP_MOVE( 13 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 16 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 19 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 25 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 25 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 30 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 38 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 42 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 42 , MOVE_SUNNY_DAY), + LEVEL_UP_END +}; + +static const struct LevelUpMove sExeggutorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_UPROAR), + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_REFLECT), + LEVEL_UP_MOVE( 13 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 16 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 19 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 25 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 25 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 30 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 38 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 42 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 42 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 47 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 53 , MOVE_EARTH_POWER), + LEVEL_UP_MOVE( 59 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sExeggityLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_UPROAR), + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_REFLECT), + LEVEL_UP_MOVE( 13 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 16 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 19 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 25 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 25 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 30 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 38 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 42 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 42 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 47 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 53 , MOVE_EARTH_POWER), + LEVEL_UP_MOVE( 59 , MOVE_FRENZY_PLANT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sExeggtricLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_UPROAR), + LEVEL_UP_MOVE( 1 , MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7 , MOVE_REFLECT), + LEVEL_UP_MOVE( 13 , MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 16 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 19 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 25 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 25 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 25 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 30 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 38 , MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 42 , MOVE_SOLARBEAM), + LEVEL_UP_MOVE( 42 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 47 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 53 , MOVE_EARTH_POWER), + LEVEL_UP_MOVE( 59 , MOVE_FRENZY_PLANT), + LEVEL_UP_MOVE( 62 , MOVE_COUNTER), + LEVEL_UP_MOVE( 70 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_CUBONE +static const struct LevelUpMove sCuboneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 13 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 17 , MOVE_LEER), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 25 , MOVE_BONEMERANG), + LEVEL_UP_MOVE( 29 , MOVE_RAGE), + LEVEL_UP_MOVE( 33 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 37 , MOVE_THRASH), + LEVEL_UP_MOVE( 41 , MOVE_BONE_RUSH), + LEVEL_UP_MOVE( 45 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMarowakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 13 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 17 , MOVE_LEER), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 25 , MOVE_BONEMERANG), + LEVEL_UP_MOVE( 30 , MOVE_RAGE), + LEVEL_UP_MOVE( 32 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 39 , MOVE_THRASH), + LEVEL_UP_MOVE( 42 , MOVE_BONE_RUSH), + LEVEL_UP_MOVE( 50 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 55 , MOVE_FRUSTRATION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOsselobberLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 13 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 17 , MOVE_LEER), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 25 , MOVE_BONEMERANG), + LEVEL_UP_MOVE( 30 , MOVE_RAGE), + LEVEL_UP_MOVE( 32 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 39 , MOVE_THRASH), + LEVEL_UP_MOVE( 42 , MOVE_BONE_RUSH), + LEVEL_UP_MOVE( 50 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 55 , MOVE_FRUSTRATION), + LEVEL_UP_MOVE( 58 , MOVE_BEAT_UP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWraiwrathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 13 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 17 , MOVE_LEER), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 25 , MOVE_BONEMERANG), + LEVEL_UP_MOVE( 30 , MOVE_RAGE), + LEVEL_UP_MOVE( 32 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 39 , MOVE_THRASH), + LEVEL_UP_MOVE( 42 , MOVE_BONE_RUSH), + LEVEL_UP_MOVE( 50 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 53 , MOVE_VITAL_THROW), + LEVEL_UP_MOVE( 54 , MOVE_SHADOW_BONE), + LEVEL_UP_MOVE( 55 , MOVE_FRUSTRATION), + LEVEL_UP_MOVE( 58 , MOVE_BEAT_UP), + LEVEL_UP_MOVE( 63 , MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 66 , MOVE_GRUDGE), + LEVEL_UP_MOVE( 66 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 70 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_HITMONLEE +static const struct LevelUpMove sHitmonleeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 6 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 11 , MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 16 , MOVE_JUMP_KICK), + LEVEL_UP_MOVE( 20 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 26 , MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE( 31 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 36 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 41 , MOVE_ENDURE), + LEVEL_UP_MOVE( 46 , MOVE_MEGA_KICK), + LEVEL_UP_MOVE( 51 , MOVE_REVERSAL), + LEVEL_UP_MOVE( 54 , MOVE_BULK_UP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCleevoyantLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 6 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 11 , MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 16 , MOVE_JUMP_KICK), + LEVEL_UP_MOVE( 20 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 26 , MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE( 31 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 36 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 38 , MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 41 , MOVE_ENDURE), + LEVEL_UP_MOVE( 46 , MOVE_MEGA_KICK), + LEVEL_UP_MOVE( 51 , MOVE_REVERSAL), + LEVEL_UP_MOVE( 54 , MOVE_BULK_UP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSpirituleeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 6 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 11 , MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 16 , MOVE_JUMP_KICK), + LEVEL_UP_MOVE( 20 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 21 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 26 , MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE( 31 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 36 , MOVE_FORESIGHT), + LEVEL_UP_MOVE( 38 , MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 41 , MOVE_ENDURE), + LEVEL_UP_MOVE( 46 , MOVE_MEGA_KICK), + LEVEL_UP_MOVE( 51 , MOVE_REVERSAL), + LEVEL_UP_MOVE( 54 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 58 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 63 , MOVE_BLAZE_KICK), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_HITMONCHAN +static const struct LevelUpMove sHitmonchanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 7 , MOVE_AGILITY), + LEVEL_UP_MOVE( 13 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 20 , MOVE_MACH_PUNCH), + LEVEL_UP_MOVE( 26 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 26 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 26 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 32 , MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE( 38 , MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE( 44 , MOVE_DETECT), + LEVEL_UP_MOVE( 45 , MOVE_COUNTER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sEnchancedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 7 , MOVE_AGILITY), + LEVEL_UP_MOVE( 13 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 20 , MOVE_MACH_PUNCH), + LEVEL_UP_MOVE( 26 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 26 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 26 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 32 , MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE( 38 , MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE( 40 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 44 , MOVE_DETECT), + LEVEL_UP_MOVE( 45 , MOVE_COUNTER), + LEVEL_UP_MOVE( 49 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 54 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 60 , MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 65 , MOVE_COSMIC_POWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRadiachanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 7 , MOVE_AGILITY), + LEVEL_UP_MOVE( 13 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 20 , MOVE_MACH_PUNCH), + LEVEL_UP_MOVE( 26 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 26 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 26 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 32 , MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE( 38 , MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE( 40 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 44 , MOVE_DETECT), + LEVEL_UP_MOVE( 45 , MOVE_COUNTER), + LEVEL_UP_MOVE( 49 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 54 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 60 , MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 65 , MOVE_COSMIC_POWER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_LICKITUNG +static const struct LevelUpMove sLickitungLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 13 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 21 , MOVE_STOMP), + LEVEL_UP_MOVE( 23 , MOVE_WRAP), + LEVEL_UP_MOVE( 26 , MOVE_REFRESH), + LEVEL_UP_MOVE( 30 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 32 , MOVE_SLAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLickilickyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 13 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 21 , MOVE_STOMP), + LEVEL_UP_MOVE( 23 , MOVE_WRAP), + LEVEL_UP_MOVE( 26 , MOVE_REFRESH), + LEVEL_UP_MOVE( 30 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 32 , MOVE_SLAM), + LEVEL_UP_MOVE( 36 , MOVE_DISABLE), + LEVEL_UP_MOVE( 41 , MOVE_SCREECH), + LEVEL_UP_MOVE( 50 , MOVE_RETURN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLickilollyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 5 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 13 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 21 , MOVE_STOMP), + LEVEL_UP_MOVE( 23 , MOVE_WRAP), + LEVEL_UP_MOVE( 26 , MOVE_REFRESH), + LEVEL_UP_MOVE( 30 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 32 , MOVE_SLAM), + LEVEL_UP_MOVE( 36 , MOVE_DISABLE), + LEVEL_UP_MOVE( 41 , MOVE_SCREECH), + LEVEL_UP_MOVE( 46 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 46 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 50 , MOVE_RETURN), + LEVEL_UP_MOVE( 56 , MOVE_HAZE), + LEVEL_UP_MOVE( 60 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 60 , MOVE_SWALLOW), + LEVEL_UP_MOVE( 60 , MOVE_SPIT_UP), + LEVEL_UP_MOVE( 62 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 65 , MOVE_BLIZZARD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLickilatoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 5 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 13 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 21 , MOVE_STOMP), + LEVEL_UP_MOVE( 23 , MOVE_WRAP), + LEVEL_UP_MOVE( 26 , MOVE_REFRESH), + LEVEL_UP_MOVE( 30 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 32 , MOVE_SLAM), + LEVEL_UP_MOVE( 36 , MOVE_DISABLE), + LEVEL_UP_MOVE( 41 , MOVE_SCREECH), + LEVEL_UP_MOVE( 46 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 46 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 50 , MOVE_RETURN), + LEVEL_UP_MOVE( 56 , MOVE_HAZE), + LEVEL_UP_MOVE( 60 , MOVE_STOCKPILE), + LEVEL_UP_MOVE( 60 , MOVE_SWALLOW), + LEVEL_UP_MOVE( 60 , MOVE_SPIT_UP), + LEVEL_UP_MOVE( 62 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 65 , MOVE_BLIZZARD), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_KOFFING +static const struct LevelUpMove sKoffingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 9 , MOVE_SMOG), + LEVEL_UP_MOVE( 17 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 21 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 33 , MOVE_HAZE), + LEVEL_UP_MOVE( 41 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 45 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 49 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWeezingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_SMOG), + LEVEL_UP_MOVE( 1 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 9 , MOVE_SMOG), + LEVEL_UP_MOVE( 17 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 21 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 33 , MOVE_HAZE), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 51 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 58 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHeevingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_SMOG), + LEVEL_UP_MOVE( 1 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 9 , MOVE_SMOG), + LEVEL_UP_MOVE( 17 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 21 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 30 , MOVE_HAZE), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 46 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 48 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 51 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 55 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 56 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 58 , MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const struct LevelUpMove sChohkingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_SMOG), + LEVEL_UP_MOVE( 1 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 9 , MOVE_SMOG), + LEVEL_UP_MOVE( 17 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 21 , MOVE_SLUDGE), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 30 , MOVE_HAZE), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 46 , MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE( 48 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 51 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 55 , MOVE_EXPLOSION), + LEVEL_UP_MOVE( 56 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 58 , MOVE_MEMENTO), + LEVEL_UP_MOVE( 61 , MOVE_TOXIC), + LEVEL_UP_MOVE( 64 , MOVE_RECOVER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_RHYHORN +static const struct LevelUpMove sRhyhornLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_STOMP), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 24 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 29 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 35 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 38 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 42 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 46 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 52 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRhydonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_STOMP), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 10 , MOVE_STOMP), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 24 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 29 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 35 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 38 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 42 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 46 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 52 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRhyperiorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_STOMP), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 10 , MOVE_STOMP), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 24 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 29 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 35 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 38 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 42 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 46 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 52 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRhymarkablLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_STOMP), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 10 , MOVE_STOMP), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 24 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 29 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 35 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 38 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 42 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 46 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 52 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRhylicLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_STOMP), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 10 , MOVE_STOMP), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 24 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 29 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 35 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 38 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 42 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 46 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 52 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 60 , MOVE_CURSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRhybornLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_STOMP), + LEVEL_UP_MOVE( 1 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 10 , MOVE_STOMP), + LEVEL_UP_MOVE( 15 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 20 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 24 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 29 , MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 35 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 38 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 42 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 46 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 52 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 58 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 60 , MOVE_CURSE), + LEVEL_UP_MOVE( 62 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 66 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 70 , MOVE_DRAGON_CLAW), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_CHANSEY +static const struct LevelUpMove sChanseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_REFRESH), + LEVEL_UP_MOVE( 13 , MOVE_SOFTBOILED), + LEVEL_UP_MOVE( 17 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 35 , MOVE_EGG_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 49 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBlisseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_REFRESH), + LEVEL_UP_MOVE( 13 , MOVE_SOFTBOILED), + LEVEL_UP_MOVE( 17 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 35 , MOVE_EGG_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 49 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGogetteyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_REFRESH), + LEVEL_UP_MOVE( 13 , MOVE_SOFTBOILED), + LEVEL_UP_MOVE( 17 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 35 , MOVE_EGG_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 49 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 58 , MOVE_RECOVER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLukkeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_REFRESH), + LEVEL_UP_MOVE( 13 , MOVE_SOFTBOILED), + LEVEL_UP_MOVE( 17 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 35 , MOVE_EGG_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 49 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 58 , MOVE_RECOVER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFortuniteyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 5 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9 , MOVE_REFRESH), + LEVEL_UP_MOVE( 13 , MOVE_SOFTBOILED), + LEVEL_UP_MOVE( 17 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 23 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 29 , MOVE_SING), + LEVEL_UP_MOVE( 35 , MOVE_EGG_BOMB), + LEVEL_UP_MOVE( 41 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 49 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 58 , MOVE_RECOVER), + LEVEL_UP_MOVE( 68 , MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 72 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_TANGELA +static const struct LevelUpMove sTangelaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 4 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_ABSORB), + LEVEL_UP_MOVE( 13 , MOVE_GROWTH), + LEVEL_UP_MOVE( 19 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 28 , MOVE_BIND), + LEVEL_UP_MOVE( 31 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 37 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 40 , MOVE_SLAM), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTangrowthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 4 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_ABSORB), + LEVEL_UP_MOVE( 13 , MOVE_GROWTH), + LEVEL_UP_MOVE( 19 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 28 , MOVE_BIND), + LEVEL_UP_MOVE( 31 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 37 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 40 , MOVE_SLAM), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_MOVE( 68 , MOVE_SYNTHESIS), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTangatherLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 4 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_ABSORB), + LEVEL_UP_MOVE( 13 , MOVE_GROWTH), + LEVEL_UP_MOVE( 19 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 28 , MOVE_BIND), + LEVEL_UP_MOVE( 31 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 37 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 40 , MOVE_SLAM), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_MOVE( 50 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 50 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 50 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 52 , MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE( 56 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 60 , MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE( 68 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 75 , MOVE_REVENGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTangoliathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 4 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_ABSORB), + LEVEL_UP_MOVE( 13 , MOVE_GROWTH), + LEVEL_UP_MOVE( 19 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 28 , MOVE_BIND), + LEVEL_UP_MOVE( 31 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 37 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 40 , MOVE_SLAM), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_MOVE( 50 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 50 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 50 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 52 , MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE( 56 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 60 , MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE( 68 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 75 , MOVE_REVENGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTangrappleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1 , MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 4 , MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 10 , MOVE_ABSORB), + LEVEL_UP_MOVE( 13 , MOVE_GROWTH), + LEVEL_UP_MOVE( 19 , MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 22 , MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 28 , MOVE_BIND), + LEVEL_UP_MOVE( 31 , MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 37 , MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 40 , MOVE_SLAM), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_MOVE( 50 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 50 , MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 50 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 52 , MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE( 56 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 60 , MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE( 65 , MOVE_MACH_PUNCH), + LEVEL_UP_MOVE( 68 , MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 75 , MOVE_REVENGE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_KANGAKID +static const struct LevelUpMove sKangakidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 5 , MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 9 , MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 13 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 16 , MOVE_BITE), + LEVEL_UP_MOVE( 25 , MOVE_DIZZY_PUNCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKangaskhanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 7 , MOVE_BITE), + LEVEL_UP_MOVE( 13 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 19 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 25 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 31 , MOVE_RAGE), + LEVEL_UP_MOVE( 37 , MOVE_ENDURE), + LEVEL_UP_MOVE( 43 , MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE( 49 , MOVE_REVERSAL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKangallousLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 7 , MOVE_BITE), + LEVEL_UP_MOVE( 13 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 19 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 25 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 31 , MOVE_RAGE), + LEVEL_UP_MOVE( 37 , MOVE_ENDURE), + LEVEL_UP_MOVE( 40 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 43 , MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE( 49 , MOVE_REVERSAL), + LEVEL_UP_MOVE( 54 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 56 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 60 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 66 , MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 70 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKangarutalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 7 , MOVE_BITE), + LEVEL_UP_MOVE( 13 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 19 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 25 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 31 , MOVE_RAGE), + LEVEL_UP_MOVE( 37 , MOVE_ENDURE), + LEVEL_UP_MOVE( 40 , MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 43 , MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE( 49 , MOVE_REVERSAL), + LEVEL_UP_MOVE( 54 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 56 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 60 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 66 , MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 70 , MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_HORSEA +static const struct LevelUpMove sHorseaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 8 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 15 , MOVE_LEER), + LEVEL_UP_MOVE( 22 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 29 , MOVE_TWISTER), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 43 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 50 , MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSeadraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1 , MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 8 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 15 , MOVE_LEER), + LEVEL_UP_MOVE( 22 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 29 , MOVE_TWISTER), + LEVEL_UP_MOVE( 32 , MOVE_AGILITY), + LEVEL_UP_MOVE( 35 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 42 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 48 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 70 , MOVE_WATER_SPOUT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKingdraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1 , MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 8 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 15 , MOVE_LEER), + LEVEL_UP_MOVE( 22 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 29 , MOVE_TWISTER), + LEVEL_UP_MOVE( 32 , MOVE_AGILITY), + LEVEL_UP_MOVE( 35 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 37 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 42 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 48 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 50 , MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 70 , MOVE_WATER_SPOUT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLordraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1 , MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 8 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 15 , MOVE_LEER), + LEVEL_UP_MOVE( 22 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 29 , MOVE_TWISTER), + LEVEL_UP_MOVE( 32 , MOVE_AGILITY), + LEVEL_UP_MOVE( 35 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 37 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 42 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 48 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 50 , MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 70 , MOVE_WATER_SPOUT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPinnadraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1 , MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 8 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 15 , MOVE_LEER), + LEVEL_UP_MOVE( 22 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 29 , MOVE_TWISTER), + LEVEL_UP_MOVE( 32 , MOVE_AGILITY), + LEVEL_UP_MOVE( 35 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 37 , MOVE_DRAGONBREATH), + LEVEL_UP_MOVE( 42 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 48 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 50 , MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 70 , MOVE_WATER_SPOUT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_GOLDEEN +static const struct LevelUpMove sGoldeenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 10 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 15 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 24 , MOVE_FLAIL), + LEVEL_UP_MOVE( 29 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 38 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 43 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 52 , MOVE_AGILITY), + LEVEL_UP_MOVE( 57 , MOVE_MEGAHORN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSeakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 10 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 15 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 24 , MOVE_FLAIL), + LEVEL_UP_MOVE( 29 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 38 , MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 41 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 49 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 55 , MOVE_ICE_FANG), + LEVEL_UP_MOVE( 59 , MOVE_AGILITY), + LEVEL_UP_MOVE( 64 , MOVE_MEGAHORN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSearexLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 1 , MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 1 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 10 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 15 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 24 , MOVE_FLAIL), + LEVEL_UP_MOVE( 29 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 38 , MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 41 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 45 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 49 , MOVE_TAUNT), + LEVEL_UP_MOVE( 53 , MOVE_FLATTER), + LEVEL_UP_MOVE( 55 , MOVE_ICE_FANG), + LEVEL_UP_MOVE( 59 , MOVE_AGILITY), + LEVEL_UP_MOVE( 64 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 68 , MOVE_REVENGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCapriseaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 1 , MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 1 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 10 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 15 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 24 , MOVE_FLAIL), + LEVEL_UP_MOVE( 29 , MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 38 , MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 41 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 45 , MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 49 , MOVE_TAUNT), + LEVEL_UP_MOVE( 53 , MOVE_FLATTER), + LEVEL_UP_MOVE( 55 , MOVE_ICE_FANG), + LEVEL_UP_MOVE( 59 , MOVE_AGILITY), + LEVEL_UP_MOVE( 64 , MOVE_MEGAHORN), + LEVEL_UP_MOVE( 68 , MOVE_REVENGE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_STARYU +static const struct LevelUpMove sStaryuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 6 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 10 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 15 , MOVE_RECOVER), + LEVEL_UP_MOVE( 19 , MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE( 23 , MOVE_SWIFT), + LEVEL_UP_MOVE( 26 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 33 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 42 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 46 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sStarmieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 6 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 10 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 15 , MOVE_RECOVER), + LEVEL_UP_MOVE( 19 , MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE( 23 , MOVE_SWIFT), + LEVEL_UP_MOVE( 26 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 33 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 42 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 46 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 50 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sStarusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 6 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 10 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 15 , MOVE_RECOVER), + LEVEL_UP_MOVE( 19 , MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE( 23 , MOVE_SWIFT), + LEVEL_UP_MOVE( 26 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 33 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 42 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 46 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 50 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 56 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 62 , MOVE_ICE_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sStarweLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 6 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 10 , MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 15 , MOVE_RECOVER), + LEVEL_UP_MOVE( 19 , MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE( 23 , MOVE_SWIFT), + LEVEL_UP_MOVE( 26 , MOVE_BUBBLEBEAM), + LEVEL_UP_MOVE( 30 , MOVE_MINIMIZE), + LEVEL_UP_MOVE( 33 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 33 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 42 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 46 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 50 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 56 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 62 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 68 , MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MR_MIME +static const struct LevelUpMove sMr_mimeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 8 , MOVE_SUBSTITUTE), + LEVEL_UP_MOVE( 12 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 15 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 19 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 19 , MOVE_REFLECT), + LEVEL_UP_MOVE( 22 , MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 26 , MOVE_ENCORE), + LEVEL_UP_MOVE( 29 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 33 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 36 , MOVE_TRICK), + LEVEL_UP_MOVE( 40 , MOVE_ROLE_PLAY), + LEVEL_UP_MOVE( 43 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 47 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 50 , MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMr_jestLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1 , MOVE_TICKLE), + LEVEL_UP_MOVE( 5 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 8 , MOVE_SUBSTITUTE), + LEVEL_UP_MOVE( 12 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 15 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 19 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 19 , MOVE_REFLECT), + LEVEL_UP_MOVE( 22 , MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 26 , MOVE_ENCORE), + LEVEL_UP_MOVE( 29 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 33 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 36 , MOVE_TRICK), + LEVEL_UP_MOVE( 38 , MOVE_TAUNT), + LEVEL_UP_MOVE( 38 , MOVE_TEETER_DANCE), + LEVEL_UP_MOVE( 40 , MOVE_ROLE_PLAY), + LEVEL_UP_MOVE( 43 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 47 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 50 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 58 , MOVE_SKILL_SWAP), + LEVEL_UP_MOVE( 60 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 60 , MOVE_ICE_BALL), + LEVEL_UP_MOVE( 60 , MOVE_WEATHER_BALL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMr_foolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1 , MOVE_TICKLE), + LEVEL_UP_MOVE( 5 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 8 , MOVE_SUBSTITUTE), + LEVEL_UP_MOVE( 12 , MOVE_MEDITATE), + LEVEL_UP_MOVE( 15 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 19 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 19 , MOVE_REFLECT), + LEVEL_UP_MOVE( 22 , MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 26 , MOVE_ENCORE), + LEVEL_UP_MOVE( 29 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 33 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 36 , MOVE_TRICK), + LEVEL_UP_MOVE( 38 , MOVE_TAUNT), + LEVEL_UP_MOVE( 38 , MOVE_TEETER_DANCE), + LEVEL_UP_MOVE( 40 , MOVE_ROLE_PLAY), + LEVEL_UP_MOVE( 43 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 47 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 50 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 58 , MOVE_SKILL_SWAP), + LEVEL_UP_MOVE( 60 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 60 , MOVE_ICE_BALL), + LEVEL_UP_MOVE( 60 , MOVE_WEATHER_BALL), + LEVEL_UP_MOVE( 70 , MOVE_MIMIC), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SCYTHER +static const struct LevelUpMove sScytherLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 6 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 11 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 16 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 21 , MOVE_AGILITY), + LEVEL_UP_MOVE( 26 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 41 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 44 , MOVE_X_SCISSOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sScizorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 6 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 11 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 16 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 21 , MOVE_AGILITY), + LEVEL_UP_MOVE( 26 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 41 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 44 , MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 49 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 54 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 59 , MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 63 , MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRazerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 6 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 11 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 16 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 21 , MOVE_AGILITY), + LEVEL_UP_MOVE( 26 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 41 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 41 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 44 , MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 49 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 54 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 59 , MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 63 , MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sClaymorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 6 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 11 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 16 , MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE( 21 , MOVE_AGILITY), + LEVEL_UP_MOVE( 26 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 31 , MOVE_SLASH), + LEVEL_UP_MOVE( 36 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 41 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 41 , MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 44 , MOVE_X_SCISSOR), + LEVEL_UP_MOVE( 49 , MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 54 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 59 , MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 63 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 70 , MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_JYNX +static const struct LevelUpMove sJynxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 1 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 9 , MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 13 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 21 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 25 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 30 , MOVE_HAIL), + LEVEL_UP_MOVE( 35 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 45 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 51 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 57 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 60 , MOVE_HAZE), + LEVEL_UP_MOVE( 67 , MOVE_BLIZZARD), + LEVEL_UP_MOVE( 73 , MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +static const struct LevelUpMove sJynkiesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 1 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 9 , MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 13 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 21 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 25 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 35 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 30 , MOVE_HAIL), + LEVEL_UP_MOVE( 41 , MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 45 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 51 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 57 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 60 , MOVE_HAZE), + LEVEL_UP_MOVE( 67 , MOVE_BLIZZARD), + LEVEL_UP_MOVE( 73 , MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +static const struct LevelUpMove sJeepersLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LICK), + LEVEL_UP_MOVE( 1 , MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 1 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 9 , MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 13 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 21 , MOVE_DOUBLESLAP), + LEVEL_UP_MOVE( 25 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 30 , MOVE_HAIL), + LEVEL_UP_MOVE( 35 , MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 41 , MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 45 , MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 51 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 57 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 60 , MOVE_HAZE), + LEVEL_UP_MOVE( 67 , MOVE_BLIZZARD), + LEVEL_UP_MOVE( 73 , MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_ELECTABUZZ +static const struct LevelUpMove sElectabuzzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 9 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 17 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 20 , MOVE_CHARGE), + LEVEL_UP_MOVE( 25 , MOVE_SWIFT), + LEVEL_UP_MOVE( 31 , MOVE_SCREECH), + LEVEL_UP_MOVE( 36 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 41 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 55 , MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectivireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 9 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 17 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 20 , MOVE_CHARGE), + LEVEL_UP_MOVE( 25 , MOVE_SWIFT), + LEVEL_UP_MOVE( 31 , MOVE_SCREECH), + LEVEL_UP_MOVE( 36 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 41 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 55 , MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectivineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 9 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 17 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 20 , MOVE_CHARGE), + LEVEL_UP_MOVE( 25 , MOVE_SWIFT), + LEVEL_UP_MOVE( 31 , MOVE_SCREECH), + LEVEL_UP_MOVE( 36 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 41 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 48 , MOVE_WOOD_HAMMER), + LEVEL_UP_MOVE( 55 , MOVE_THUNDER), + LEVEL_UP_MOVE( 59 , MOVE_FRENZY_PLANT), + LEVEL_UP_MOVE( 65 , MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectiwizzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 9 , MOVE_THUNDERPUNCH), + LEVEL_UP_MOVE( 17 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 20 , MOVE_CHARGE), + LEVEL_UP_MOVE( 25 , MOVE_SWIFT), + LEVEL_UP_MOVE( 31 , MOVE_SCREECH), + LEVEL_UP_MOVE( 36 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 41 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 48 , MOVE_WOOD_HAMMER), + LEVEL_UP_MOVE( 55 , MOVE_THUNDER), + LEVEL_UP_MOVE( 59 , MOVE_FRENZY_PLANT), + LEVEL_UP_MOVE( 65 , MOVE_EARTHQUAKE), + LEVEL_UP_MOVE( 70 , MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MAGMAR +static const struct LevelUpMove sMagmarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_SMOG), + LEVEL_UP_MOVE( 1 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_SMOG), + LEVEL_UP_MOVE( 19 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 33 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 41 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 49 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 57 , MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMagmortarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_SMOG), + LEVEL_UP_MOVE( 1 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1 , MOVE_CURSE), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_SMOG), + LEVEL_UP_MOVE( 19 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 30 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 33 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 35 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 40 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 57 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 70 , MOVE_ERUPTION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMagmoreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_SMOG), + LEVEL_UP_MOVE( 1 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1 , MOVE_CURSE), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_SMOG), + LEVEL_UP_MOVE( 19 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 30 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 33 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 35 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 40 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 48 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 57 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 70 , MOVE_ERUPTION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMagmoltenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_SMOG), + LEVEL_UP_MOVE( 1 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 1 , MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 1 , MOVE_CURSE), + LEVEL_UP_MOVE( 7 , MOVE_LEER), + LEVEL_UP_MOVE( 13 , MOVE_SMOG), + LEVEL_UP_MOVE( 19 , MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 25 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 30 , MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 33 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 35 , MOVE_FOUL_PLAY), + LEVEL_UP_MOVE( 40 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 48 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 57 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 65 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 70 , MOVE_ERUPTION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PINSIR +static const struct LevelUpMove sPinsirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7 , MOVE_BIND), + LEVEL_UP_MOVE( 13 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 37 , MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 43 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 49 , MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPinsiriorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7 , MOVE_BIND), + LEVEL_UP_MOVE( 13 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 37 , MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 40 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 43 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 45 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 49 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 51 , MOVE_BEAT_UP), + LEVEL_UP_MOVE( 58 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 60 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 62 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 64 , MOVE_X_SCISSOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAbyssirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7 , MOVE_BIND), + LEVEL_UP_MOVE( 13 , MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE( 19 , MOVE_HARDEN), + LEVEL_UP_MOVE( 25 , MOVE_REVENGE), + LEVEL_UP_MOVE( 31 , MOVE_BRICK_BREAK), + LEVEL_UP_MOVE( 37 , MOVE_GUILLOTINE), + LEVEL_UP_MOVE( 40 , MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 43 , MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 45 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 49 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 51 , MOVE_BEAT_UP), + LEVEL_UP_MOVE( 58 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 60 , MOVE_CRUNCH), + LEVEL_UP_MOVE( 62 , MOVE_BULK_UP), + LEVEL_UP_MOVE( 64 , MOVE_X_SCISSOR), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_TAUROS +static const struct LevelUpMove sTaurosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 4 , MOVE_RAGE), + LEVEL_UP_MOVE( 8 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 13 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 19 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 23 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 26 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 30 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 34 , MOVE_THRASH), + LEVEL_UP_MOVE( 40 , MOVE_REST), + LEVEL_UP_MOVE( 46 , MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_TEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTauroxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 4 , MOVE_RAGE), + LEVEL_UP_MOVE( 8 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 13 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 19 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 23 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 26 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 30 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 34 , MOVE_THRASH), + LEVEL_UP_MOVE( 40 , MOVE_REST), + LEVEL_UP_MOVE( 46 , MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_TEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOxenfreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 4 , MOVE_RAGE), + LEVEL_UP_MOVE( 8 , MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 13 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 19 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 23 , MOVE_PURSUIT), + LEVEL_UP_MOVE( 26 , MOVE_SWAGGER), + LEVEL_UP_MOVE( 30 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 34 , MOVE_THRASH), + LEVEL_UP_MOVE( 40 , MOVE_REST), + LEVEL_UP_MOVE( 46 , MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 54 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 58 , MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE( 62 , MOVE_SKULL_BASH), + LEVEL_UP_MOVE( 65 , MOVE_MEGAHORN), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MAGIKARP +static const struct LevelUpMove sMagikarpLevelUpLearnset[] = { + LEVEL_UP_MOVE( 15 , MOVE_TACKLE), + LEVEL_UP_MOVE( 30 , MOVE_FLAIL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGyaradosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 26 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_LEER), + LEVEL_UP_MOVE( 33 , MOVE_TWISTER), + LEVEL_UP_MOVE( 38 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 52 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 55 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHydradosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 26 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_LEER), + LEVEL_UP_MOVE( 33 , MOVE_TWISTER), + LEVEL_UP_MOVE( 38 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 52 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 55 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 60 , MOVE_DRAGON_PULSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDracosmicLevelUpLearnset[] = { + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 26 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_LEER), + LEVEL_UP_MOVE( 33 , MOVE_TWISTER), + LEVEL_UP_MOVE( 38 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 52 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 55 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 60 , MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 66 , MOVE_EXTRASENSORY), + LEVEL_UP_END +}; + +static const struct LevelUpMove sQuazarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 20 , MOVE_BITE), + LEVEL_UP_MOVE( 23 , MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 26 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_LEER), + LEVEL_UP_MOVE( 33 , MOVE_TWISTER), + LEVEL_UP_MOVE( 38 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 52 , MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 55 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 60 , MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 66 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 75 , MOVE_WISH), + LEVEL_UP_MOVE( 80 , MOVE_COSMIC_POWER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_LAPRAS +static const struct LevelUpMove sLaprasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_SING), + LEVEL_UP_MOVE( 7 , MOVE_MIST), + LEVEL_UP_MOVE( 13 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 19 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_PERISH_SONG), + LEVEL_UP_MOVE( 31 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 37 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 40 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 43 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 49 , MOVE_SURF), + LEVEL_UP_MOVE( 55 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 58 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 62 , MOVE_UPROAR), + LEVEL_UP_MOVE( 65 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 72 , MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLochlassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_SING), + LEVEL_UP_MOVE( 7 , MOVE_MIST), + LEVEL_UP_MOVE( 13 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 19 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_PERISH_SONG), + LEVEL_UP_MOVE( 31 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 37 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 40 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 43 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 49 , MOVE_SURF), + LEVEL_UP_MOVE( 55 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 58 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 62 , MOVE_UPROAR), + LEVEL_UP_MOVE( 65 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 72 , MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNesseaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_GROWL), + LEVEL_UP_MOVE( 1 , MOVE_SING), + LEVEL_UP_MOVE( 7 , MOVE_MIST), + LEVEL_UP_MOVE( 13 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 19 , MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 25 , MOVE_PERISH_SONG), + LEVEL_UP_MOVE( 31 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 37 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 40 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 43 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 49 , MOVE_SURF), + LEVEL_UP_MOVE( 55 , MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 58 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 62 , MOVE_UPROAR), + LEVEL_UP_MOVE( 65 , MOVE_MOONLIGHT), + LEVEL_UP_MOVE( 72 , MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_DITTO +static const struct LevelUpMove sDittoLevelUpLearnset[] = { + LEVEL_UP_END +}; + +static const struct LevelUpMove sMorphoLevelUpLearnset[] = { + LEVEL_UP_END +}; + +static const struct LevelUpMove sMetamorphoLevelUpLearnset[] = { + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_EEVEE +static const struct LevelUpMove sEeveeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_GROWL), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_BITE), + LEVEL_UP_MOVE( 36 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 42 , MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVaporeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_BITE), + LEVEL_UP_MOVE( 36 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 42 , MOVE_HAZE), + LEVEL_UP_MOVE( 47 , MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRiveonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_BITE), + LEVEL_UP_MOVE( 36 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 42 , MOVE_HAZE), + LEVEL_UP_MOVE( 47 , MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBrineonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_RAIN_DANCE), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_BITE), + LEVEL_UP_MOVE( 36 , MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 42 , MOVE_HAZE), + LEVEL_UP_MOVE( 47 , MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 52 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 55 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 65 , MOVE_TRI_ATTACK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sJolteonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_AGILITY), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 36 , MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 42 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 47 , MOVE_AGILITY), + LEVEL_UP_MOVE( 52 , MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPlasmeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_AGILITY), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 36 , MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 42 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 47 , MOVE_AGILITY), + LEVEL_UP_MOVE( 52 , MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGalveonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_AGILITY), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 36 , MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 42 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 47 , MOVE_AGILITY), + LEVEL_UP_MOVE( 52 , MOVE_THUNDER), + LEVEL_UP_MOVE( 55 , MOVE_EXTREMESPEED), + LEVEL_UP_MOVE( 65 , MOVE_TRI_ATTACK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFlareonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_EMBER), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_BITE), + LEVEL_UP_MOVE( 36 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 42 , MOVE_SMOG), + LEVEL_UP_MOVE( 47 , MOVE_LEER), + LEVEL_UP_MOVE( 52 , MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSmoldeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_EMBER), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_BITE), + LEVEL_UP_MOVE( 36 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 42 , MOVE_SMOG), + LEVEL_UP_MOVE( 47 , MOVE_LEER), + LEVEL_UP_MOVE( 52 , MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sInferneonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1 , MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1 , MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1 , MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 8 , MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 16 , MOVE_EMBER), + LEVEL_UP_MOVE( 23 , MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 30 , MOVE_BITE), + LEVEL_UP_MOVE( 36 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 42 , MOVE_SMOG), + LEVEL_UP_MOVE( 47 , MOVE_LEER), + LEVEL_UP_MOVE( 52 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 55 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 65 , MOVE_TRI_ATTACK), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_PORYGON +static const struct LevelUpMove sPorygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 9 , MOVE_AGILITY), + LEVEL_UP_MOVE( 12 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 20 , MOVE_RECOVER), + LEVEL_UP_MOVE( 24 , MOVE_SHARPEN), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 48 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 52 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPorygon2LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 9 , MOVE_AGILITY), + LEVEL_UP_MOVE( 12 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 20 , MOVE_RECOVER), + LEVEL_UP_MOVE( 24 , MOVE_SHARPEN), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 48 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 52 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPorygonzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 9 , MOVE_AGILITY), + LEVEL_UP_MOVE( 12 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 20 , MOVE_RECOVER), + LEVEL_UP_MOVE( 24 , MOVE_SHARPEN), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 48 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 52 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPorygonxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 9 , MOVE_AGILITY), + LEVEL_UP_MOVE( 12 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 20 , MOVE_RECOVER), + LEVEL_UP_MOVE( 24 , MOVE_SHARPEN), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 48 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 52 , MOVE_PSYCHIC), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPorygonqLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 9 , MOVE_AGILITY), + LEVEL_UP_MOVE( 12 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 20 , MOVE_RECOVER), + LEVEL_UP_MOVE( 24 , MOVE_SHARPEN), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 48 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 52 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 56 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 62 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 67 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPorygon2a4LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_TACKLE), + LEVEL_UP_MOVE( 1 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 9 , MOVE_AGILITY), + LEVEL_UP_MOVE( 12 , MOVE_PSYBEAM), + LEVEL_UP_MOVE( 20 , MOVE_RECOVER), + LEVEL_UP_MOVE( 24 , MOVE_SHARPEN), + LEVEL_UP_MOVE( 32 , MOVE_LOCK_ON), + LEVEL_UP_MOVE( 36 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 44 , MOVE_RECYCLE), + LEVEL_UP_MOVE( 48 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 52 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 56 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 62 , MOVE_SELFDESTRUCT), + LEVEL_UP_MOVE( 67 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_OMANYTE +static const struct LevelUpMove sOmanyteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 19 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 31 , MOVE_LEER), + LEVEL_UP_MOVE( 37 , MOVE_PROTECT), + LEVEL_UP_MOVE( 43 , MOVE_TICKLE), + LEVEL_UP_MOVE( 49 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 55 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOmastarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 1 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 19 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 31 , MOVE_LEER), + LEVEL_UP_MOVE( 37 , MOVE_PROTECT), + LEVEL_UP_MOVE( 40 , MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_MOVE( 55 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 65 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOmapalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 1 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 1 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 19 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 31 , MOVE_LEER), + LEVEL_UP_MOVE( 37 , MOVE_PROTECT), + LEVEL_UP_MOVE( 40 , MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_MOVE( 55 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 62 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 65 , MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOmagusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1 , MOVE_BITE), + LEVEL_UP_MOVE( 1 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 1 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 13 , MOVE_BITE), + LEVEL_UP_MOVE( 19 , MOVE_WATER_GUN), + LEVEL_UP_MOVE( 25 , MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 31 , MOVE_LEER), + LEVEL_UP_MOVE( 37 , MOVE_PROTECT), + LEVEL_UP_MOVE( 40 , MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE( 46 , MOVE_TICKLE), + LEVEL_UP_MOVE( 55 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 62 , MOVE_COSMIC_POWER), + LEVEL_UP_MOVE( 65 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 70 , MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_KABUTO +static const struct LevelUpMove sKabutoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 13 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_CLAMP), + LEVEL_UP_MOVE( 25 , MOVE_LEER), + LEVEL_UP_MOVE( 31 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 37 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 43 , MOVE_ENDURE), + LEVEL_UP_MOVE( 49 , MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 53 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 56 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_POISON_JAB), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKabutopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 13 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_CLAMP), + LEVEL_UP_MOVE( 25 , MOVE_LEER), + LEVEL_UP_MOVE( 31 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 37 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 43 , MOVE_ENDURE), + LEVEL_UP_MOVE( 49 , MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 53 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 56 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_POISON_JAB), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKabutakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 13 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_CLAMP), + LEVEL_UP_MOVE( 25 , MOVE_LEER), + LEVEL_UP_MOVE( 31 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 37 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 43 , MOVE_ENDURE), + LEVEL_UP_MOVE( 49 , MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 51 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 53 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 56 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 64 , MOVE_METEOR_MASH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKabustionLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_HARDEN), + LEVEL_UP_MOVE( 13 , MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 19 , MOVE_CLAMP), + LEVEL_UP_MOVE( 25 , MOVE_LEER), + LEVEL_UP_MOVE( 31 , MOVE_WATERFALL), + LEVEL_UP_MOVE( 37 , MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 43 , MOVE_ENDURE), + LEVEL_UP_MOVE( 49 , MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 51 , MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 53 , MOVE_MAGNITUDE), + LEVEL_UP_MOVE( 56 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_POISON_JAB), + LEVEL_UP_MOVE( 64 , MOVE_METEOR_MASH), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_AERODACTYL +static const struct LevelUpMove sAerodactylLevelUpLearnset[] = { + LEVEL_UP_MOVE( 8 , MOVE_AGILITY), + LEVEL_UP_MOVE( 15 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 29 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 36 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 43 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 50 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMandiluftLevelUpLearnset[] = { + LEVEL_UP_MOVE( 8 , MOVE_AGILITY), + LEVEL_UP_MOVE( 15 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 29 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 36 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 40 , MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 43 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 50 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 55 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 60 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 70 , MOVE_SUPERPOWER), + LEVEL_UP_MOVE( 75 , MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAmbalithicLevelUpLearnset[] = { + LEVEL_UP_MOVE( 8 , MOVE_AGILITY), + LEVEL_UP_MOVE( 15 , MOVE_BITE), + LEVEL_UP_MOVE( 22 , MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 29 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 36 , MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 40 , MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 43 , MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 50 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 55 , MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 60 , MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE( 70 , MOVE_SUPERPOWER), + LEVEL_UP_MOVE( 75 , MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_SNORLAX +static const struct LevelUpMove sSnorlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 9 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 13 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 17 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 21 , MOVE_YAWN), + LEVEL_UP_MOVE( 25 , MOVE_REST), + LEVEL_UP_MOVE( 29 , MOVE_SNORE), + LEVEL_UP_MOVE( 33 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 37 , MOVE_SLEEP_TALK), + LEVEL_UP_MOVE( 41 , MOVE_BLOCK), + LEVEL_UP_MOVE( 45 , MOVE_COVET), + LEVEL_UP_MOVE( 49 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 53 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sActlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 9 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 13 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 17 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 21 , MOVE_YAWN), + LEVEL_UP_MOVE( 25 , MOVE_REST), + LEVEL_UP_MOVE( 29 , MOVE_SNORE), + LEVEL_UP_MOVE( 33 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 37 , MOVE_SLEEP_TALK), + LEVEL_UP_MOVE( 41 , MOVE_BLOCK), + LEVEL_UP_MOVE( 45 , MOVE_COVET), + LEVEL_UP_MOVE( 49 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 53 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 65 , MOVE_SUBMISSION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGrizzlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 5 , MOVE_AMNESIA), + LEVEL_UP_MOVE( 9 , MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 13 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 17 , MOVE_HEADBUTT), + LEVEL_UP_MOVE( 21 , MOVE_YAWN), + LEVEL_UP_MOVE( 25 , MOVE_REST), + LEVEL_UP_MOVE( 29 , MOVE_SNORE), + LEVEL_UP_MOVE( 33 , MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 37 , MOVE_SLEEP_TALK), + LEVEL_UP_MOVE( 41 , MOVE_BLOCK), + LEVEL_UP_MOVE( 45 , MOVE_COVET), + LEVEL_UP_MOVE( 49 , MOVE_ROLLOUT), + LEVEL_UP_MOVE( 53 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 60 , MOVE_COUNTER), + LEVEL_UP_MOVE( 65 , MOVE_SUBMISSION), + LEVEL_UP_MOVE( 70 , MOVE_SMELLINGSALT), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_ARTICUNO +static const struct LevelUpMove sArticunoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 13 , MOVE_MIST), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 49 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 55 , MOVE_REFLECT), + LEVEL_UP_MOVE( 61 , MOVE_BLIZZARD), + LEVEL_UP_MOVE( 65 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 70 , MOVE_AEROBLAST), + LEVEL_UP_MOVE( 75 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 85 , MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSnowoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 13 , MOVE_MIST), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 49 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 55 , MOVE_REFLECT), + LEVEL_UP_MOVE( 61 , MOVE_BLIZZARD), + LEVEL_UP_MOVE( 65 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 70 , MOVE_AEROBLAST), + LEVEL_UP_MOVE( 75 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 85 , MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFrostunusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 13 , MOVE_MIST), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_MIND_READER), + LEVEL_UP_MOVE( 49 , MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 55 , MOVE_REFLECT), + LEVEL_UP_MOVE( 61 , MOVE_BLIZZARD), + LEVEL_UP_MOVE( 65 , MOVE_AURORA_VEIL), + LEVEL_UP_MOVE( 70 , MOVE_AEROBLAST), + LEVEL_UP_MOVE( 75 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 85 , MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_ZAPDOS +static const struct LevelUpMove sZapdosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 13 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_DETECT), + LEVEL_UP_MOVE( 49 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 50 , MOVE_THUNDER), + LEVEL_UP_MOVE( 55 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 60 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 70 , MOVE_AEROBLAST), + LEVEL_UP_MOVE( 73 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 75 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 85 , MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sShockatooLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 13 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_DETECT), + LEVEL_UP_MOVE( 49 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 50 , MOVE_THUNDER), + LEVEL_UP_MOVE( 55 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 60 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 70 , MOVE_AEROBLAST), + LEVEL_UP_MOVE( 73 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 75 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 85 , MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVoltduoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_THUNDERSHOCK), + LEVEL_UP_MOVE( 13 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_DETECT), + LEVEL_UP_MOVE( 49 , MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 50 , MOVE_THUNDER), + LEVEL_UP_MOVE( 55 , MOVE_THUNDERBOLT), + LEVEL_UP_MOVE( 60 , MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 70 , MOVE_AEROBLAST), + LEVEL_UP_MOVE( 73 , MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 75 , MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 85 , MOVE_THUNDER), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MOLTRES +static const struct LevelUpMove sMoltresLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_ENDURE), + LEVEL_UP_MOVE( 49 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 55 , MOVE_OVERHEAT), + LEVEL_UP_MOVE( 58 , MOVE_AIR_CUTTER), + LEVEL_UP_MOVE( 61 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 73 , MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 75 , MOVE_BLAST_BURN), + LEVEL_UP_MOVE( 85 , MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sIgnithreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_ENDURE), + LEVEL_UP_MOVE( 49 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 55 , MOVE_OVERHEAT), + LEVEL_UP_MOVE( 58 , MOVE_AIR_CUTTER), + LEVEL_UP_MOVE( 61 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 73 , MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 75 , MOVE_BLAST_BURN), + LEVEL_UP_MOVE( 85 , MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sInferntriLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_EMBER), + LEVEL_UP_MOVE( 13 , MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 25 , MOVE_AGILITY), + LEVEL_UP_MOVE( 37 , MOVE_ENDURE), + LEVEL_UP_MOVE( 49 , MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 55 , MOVE_OVERHEAT), + LEVEL_UP_MOVE( 58 , MOVE_AIR_CUTTER), + LEVEL_UP_MOVE( 61 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 73 , MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 75 , MOVE_BLAST_BURN), + LEVEL_UP_MOVE( 85 , MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_DRATINI +static const struct LevelUpMove sDratiniLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 15 , MOVE_TWISTER), + LEVEL_UP_MOVE( 22 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_SLAM), + LEVEL_UP_MOVE( 36 , MOVE_AGILITY), + LEVEL_UP_MOVE( 43 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 50 , MOVE_OUTRAGE), + LEVEL_UP_MOVE( 57 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDragonairLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1 , MOVE_TWISTER), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 15 , MOVE_TWISTER), + LEVEL_UP_MOVE( 22 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_SLAM), + LEVEL_UP_MOVE( 38 , MOVE_AGILITY), + LEVEL_UP_MOVE( 47 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 56 , MOVE_OUTRAGE), + LEVEL_UP_MOVE( 65 , MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDragoniteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1 , MOVE_TWISTER), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 15 , MOVE_TWISTER), + LEVEL_UP_MOVE( 22 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_SLAM), + LEVEL_UP_MOVE( 35 , MOVE_AGILITY), + LEVEL_UP_MOVE( 41 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 45 , MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 47 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 51 , MOVE_OUTRAGE), + LEVEL_UP_MOVE( 51 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 58 , MOVE_FLY), + LEVEL_UP_MOVE( 60 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 63 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 63 , MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDragonierLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1 , MOVE_TWISTER), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 15 , MOVE_TWISTER), + LEVEL_UP_MOVE( 22 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_SLAM), + LEVEL_UP_MOVE( 35 , MOVE_AGILITY), + LEVEL_UP_MOVE( 41 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 45 , MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 47 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 51 , MOVE_OUTRAGE), + LEVEL_UP_MOVE( 51 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 58 , MOVE_FLY), + LEVEL_UP_MOVE( 60 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 63 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 63 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 73 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 75 , MOVE_HEAL_BELL), + LEVEL_UP_MOVE( 80 , MOVE_WISH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDragonaceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1 , MOVE_TWISTER), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 15 , MOVE_TWISTER), + LEVEL_UP_MOVE( 22 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_SLAM), + LEVEL_UP_MOVE( 35 , MOVE_AGILITY), + LEVEL_UP_MOVE( 41 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 45 , MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 47 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 51 , MOVE_OUTRAGE), + LEVEL_UP_MOVE( 51 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 58 , MOVE_FLY), + LEVEL_UP_MOVE( 60 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 63 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 63 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 73 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 75 , MOVE_HEAL_BELL), + LEVEL_UP_MOVE( 80 , MOVE_WISH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDragontaleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_LEER), + LEVEL_UP_MOVE( 1 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1 , MOVE_TWISTER), + LEVEL_UP_MOVE( 8 , MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 15 , MOVE_TWISTER), + LEVEL_UP_MOVE( 22 , MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 29 , MOVE_SLAM), + LEVEL_UP_MOVE( 35 , MOVE_AGILITY), + LEVEL_UP_MOVE( 41 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 45 , MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE( 47 , MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 51 , MOVE_OUTRAGE), + LEVEL_UP_MOVE( 51 , MOVE_BELLY_DRUM), + LEVEL_UP_MOVE( 58 , MOVE_FLY), + LEVEL_UP_MOVE( 60 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 63 , MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 63 , MOVE_FIRE_BLAST), + LEVEL_UP_MOVE( 73 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 75 , MOVE_HEAL_BELL), + LEVEL_UP_MOVE( 80 , MOVE_WISH), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MEWTWO +static const struct LevelUpMove sMewtwoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 11 , MOVE_BARRIER), + LEVEL_UP_MOVE( 22 , MOVE_MIST), + LEVEL_UP_MOVE( 33 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_RECOVER), + LEVEL_UP_MOVE( 55 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 60 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 66 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 75 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 78 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 81 , MOVE_TRANSFORM), + LEVEL_UP_MOVE( 88 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 90 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 99 , MOVE_AMNESIA), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMewthreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 11 , MOVE_BARRIER), + LEVEL_UP_MOVE( 22 , MOVE_MIST), + LEVEL_UP_MOVE( 33 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_RECOVER), + LEVEL_UP_MOVE( 55 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 60 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 66 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 75 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 78 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 81 , MOVE_TRANSFORM), + LEVEL_UP_MOVE( 88 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 90 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 99 , MOVE_AMNESIA), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMewfourLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_DISABLE), + LEVEL_UP_MOVE( 11 , MOVE_BARRIER), + LEVEL_UP_MOVE( 22 , MOVE_MIST), + LEVEL_UP_MOVE( 33 , MOVE_SWIFT), + LEVEL_UP_MOVE( 44 , MOVE_RECOVER), + LEVEL_UP_MOVE( 55 , MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 60 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 66 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 75 , MOVE_DARK_PULSE), + LEVEL_UP_MOVE( 78 , MOVE_EXTRASENSORY), + LEVEL_UP_MOVE( 81 , MOVE_TRANSFORM), + LEVEL_UP_MOVE( 88 , MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 90 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 99 , MOVE_AMNESIA), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MEW +static const struct LevelUpMove sMewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_TRANSFORM), + LEVEL_UP_MOVE( 10 , MOVE_TELEPORT), + LEVEL_UP_MOVE( 20 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 30 , MOVE_METRONOME), + LEVEL_UP_MOVE( 40 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 50 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_RECOVER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNyuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_TRANSFORM), + LEVEL_UP_MOVE( 10 , MOVE_TELEPORT), + LEVEL_UP_MOVE( 20 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 30 , MOVE_METRONOME), + LEVEL_UP_MOVE( 40 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 50 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_RECOVER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sIotaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 10 , MOVE_TRANSFORM), + LEVEL_UP_MOVE( 10 , MOVE_TELEPORT), + LEVEL_UP_MOVE( 20 , MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE( 30 , MOVE_METRONOME), + LEVEL_UP_MOVE( 40 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 50 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 60 , MOVE_RECOVER), + LEVEL_UP_MOVE( 75 , MOVE_PSYCHO_BOOST), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MISSINGNO1 +static const struct LevelUpMove sMissingno1LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BIND), + LEVEL_UP_MOVE( 1 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 5 , MOVE_TACKLE), + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 15 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 20 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 26 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 32 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 38 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_METRONOME), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 52 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 56 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 61 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 68 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 75 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MISSINGNO2 +static const struct LevelUpMove sMissingno2LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BIND), + LEVEL_UP_MOVE( 1 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 5 , MOVE_TACKLE), + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 15 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 20 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 26 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 32 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 38 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_METRONOME), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 52 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 56 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 61 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 68 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 75 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MISSINGNO3 +static const struct LevelUpMove sMissingno3LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BIND), + LEVEL_UP_MOVE( 1 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 5 , MOVE_TACKLE), + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 15 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 20 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 26 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 32 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 38 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_METRONOME), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 52 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 56 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 61 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 68 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 75 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MISSINGNO4 +static const struct LevelUpMove sMissingno4LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BIND), + LEVEL_UP_MOVE( 1 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 5 , MOVE_TACKLE), + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 15 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 20 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 26 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 32 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 38 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_METRONOME), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 52 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 56 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 61 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 68 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 75 , MOVE_EXPLOSION), + LEVEL_UP_END +}; + +#endif + +#if P_FAMILY_MISSINGNO5 +static const struct LevelUpMove sMissingno5LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1 , MOVE_BIND), + LEVEL_UP_MOVE( 1 , MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1 , MOVE_PAY_DAY), + LEVEL_UP_MOVE( 5 , MOVE_TACKLE), + LEVEL_UP_MOVE( 10 , MOVE_CONFUSION), + LEVEL_UP_MOVE( 15 , MOVE_CONVERSION), + LEVEL_UP_MOVE( 20 , MOVE_PSYWAVE), + LEVEL_UP_MOVE( 26 , MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 32 , MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 38 , MOVE_PSYCHIC), + LEVEL_UP_MOVE( 40 , MOVE_METRONOME), + LEVEL_UP_MOVE( 44 , MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 48 , MOVE_ANCIENTPOWER), + LEVEL_UP_MOVE( 52 , MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 56 , MOVE_FLASH_CANNON), + LEVEL_UP_MOVE( 61 , MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 68 , MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 75 , MOVE_EXPLOSION), + LEVEL_UP_END +}; +#endif + diff --git a/pokeemerald-tools/new-mons_species.h b/pokeemerald-tools/new-mons_species.h new file mode 100644 index 0000000000..43c421e34e --- /dev/null +++ b/pokeemerald-tools/new-mons_species.h @@ -0,0 +1,386 @@ +#define P_FAMILY_ECOSAUR P_GEN_EVO_POKEMON +#define P_FAMILY_TERARISAUR P_GEN_EVO_POKEMON +#define P_FAMILY_SYMBISAUR P_GEN_EVO_POKEMON +#define P_FAMILY_CHARIGUANA P_GEN_EVO_POKEMON +#define P_FAMILY_CHARIANA P_GEN_EVO_POKEMON +#define P_FAMILY_CHARIATHAN P_GEN_EVO_POKEMON +#define P_FAMILY_FERRAPIN P_GEN_EVO_POKEMON +#define P_FAMILY_FORTOISE P_GEN_EVO_POKEMON +#define P_FAMILY_TURTILLERY P_GEN_EVO_POKEMON +#define P_FAMILY_BUTTEFLARE P_GEN_EVO_POKEMON +#define P_FAMILY_PYREFREE P_GEN_EVO_POKEMON +#define P_FAMILY_IMPSECT P_GEN_EVO_POKEMON +#define P_FAMILY_BEEBRUTE P_GEN_EVO_POKEMON +#define P_FAMILY_DRONARCH P_GEN_EVO_POKEMON +#define P_FAMILY_SEPISTRIKE P_GEN_EVO_POKEMON +#define P_FAMILY_PIDGAERO P_GEN_EVO_POKEMON +#define P_FAMILY_PIDGEOZONE P_GEN_EVO_POKEMON +#define P_FAMILY_PIDGEPHYR P_GEN_EVO_POKEMON +#define P_FAMILY_RATTCHET P_GEN_EVO_POKEMON +#define P_FAMILY_RATTARULE P_GEN_EVO_POKEMON +#define P_FAMILY_SNEEROW P_GEN_EVO_POKEMON +#define P_FAMILY_ORNITHOW P_GEN_EVO_POKEMON +#define P_FAMILY_NOHTYP P_GEN_EVO_POKEMON +#define P_FAMILY_ADNOKANA P_GEN_EVO_POKEMON +#define P_FAMILY_GOROCHU P_GEN_EVO_POKEMON +#define P_FAMILY_STROMACHU P_GEN_EVO_POKEMON +#define P_FAMILY_SANDSLAM P_GEN_EVO_POKEMON +#define P_FAMILY_FERODILLO P_GEN_EVO_POKEMON +#define P_FAMILY_NIDOREGAL P_GEN_EVO_POKEMON +#define P_FAMILY_NIDOARCHY P_GEN_EVO_POKEMON +#define P_FAMILY_NIDORULY P_GEN_EVO_POKEMON +#define P_FAMILY_NIDOMINATE P_GEN_EVO_POKEMON +#define P_FAMILY_CLEFAEFAE P_GEN_EVO_POKEMON +#define P_FAMILY_CLEFANAUT P_GEN_EVO_POKEMON +#define P_FAMILY_SPIRITALES P_GEN_EVO_POKEMON +#define P_FAMILY_YOKAYUBI P_GEN_EVO_POKEMON +#define P_FAMILY_GIGGLYHUFF P_GEN_EVO_POKEMON +#define P_FAMILY_BOGGLYFUFF P_GEN_EVO_POKEMON +#define P_FAMILY_POLABAT P_GEN_EVO_POKEMON +#define P_FAMILY_VISIBAT P_GEN_EVO_POKEMON +#define P_FAMILY_HORRIBAT P_GEN_EVO_POKEMON +#define P_FAMILY_RAFFLURK P_GEN_EVO_POKEMON +#define P_FAMILY_CONCORPSIA P_GEN_EVO_POKEMON +#define P_FAMILY_SECTASITE P_GEN_EVO_POKEMON +#define P_FAMILY_FUNGALITH P_GEN_EVO_POKEMON +#define P_FAMILY_VENOMENA P_GEN_EVO_POKEMON +#define P_FAMILY_VENOMENON P_GEN_EVO_POKEMON +#define P_FAMILY_DUGROUPLE P_GEN_EVO_POKEMON +#define P_FAMILY_UNEARTHLET P_GEN_EVO_POKEMON +#define P_FAMILY_DIGLENOID P_GEN_EVO_POKEMON +#define P_FAMILY_FELANKH P_GEN_EVO_POKEMON +#define P_FAMILY_PATRAPHINX P_GEN_EVO_POKEMON +#define P_FAMILY_GILDUCK P_GEN_EVO_POKEMON +#define P_FAMILY_PLATINUPUS P_GEN_EVO_POKEMON +#define P_FAMILY_GORILLASH P_GEN_EVO_POKEMON +#define P_FAMILY_BONUMBELL P_GEN_EVO_POKEMON +#define P_FAMILY_SINGESHA P_GEN_EVO_POKEMON +#define P_FAMILY_GUARDIANCE P_GEN_EVO_POKEMON +#define P_FAMILY_POLITOES P_GEN_EVO_POKEMON +#define P_FAMILY_POLIWISE P_GEN_EVO_POKEMON +#define P_FAMILY_POLIATH P_GEN_EVO_POKEMON +#define P_FAMILY_SIMSALABIM P_GEN_EVO_POKEMON +#define P_FAMILY_VOHOODU P_GEN_EVO_POKEMON +#define P_FAMILY_TZARKARTZ P_GEN_EVO_POKEMON +#define P_FAMILY_MACHULK P_GEN_EVO_POKEMON +#define P_FAMILY_ABOMACHULK P_GEN_EVO_POKEMON +#define P_FAMILY_MACHITAN P_GEN_EVO_POKEMON +#define P_FAMILY_MUCKTRIBEL P_GEN_EVO_POKEMON +#define P_FAMILY_CARNABELL P_GEN_EVO_POKEMON +#define P_FAMILY_DEVLORA P_GEN_EVO_POKEMON +#define P_FAMILY_TENTACATE P_GEN_EVO_POKEMON +#define P_FAMILY_TENTABOMA P_GEN_EVO_POKEMON +#define P_FAMILY_SLAGOLEM P_GEN_EVO_POKEMON +#define P_FAMILY_MOLTREM P_GEN_EVO_POKEMON +#define P_FAMILY_VOLCANICOL P_GEN_EVO_POKEMON +#define P_FAMILY_COMBUSTANG P_GEN_EVO_POKEMON +#define P_FAMILY_KNIGHTMARE P_GEN_EVO_POKEMON +#define P_FAMILY_SLOWMATE P_GEN_EVO_POKEMON +#define P_FAMILY_SLOWCHUM P_GEN_EVO_POKEMON +#define P_FAMILY_MAGNEMELD P_GEN_EVO_POKEMON +#define P_FAMILY_MAGNEMASTR P_GEN_EVO_POKEMON +#define P_FAMILY_FORFOWLD P_GEN_EVO_POKEMON +#define P_FAMILY_FOWLNTOM P_GEN_EVO_POKEMON +#define P_FAMILY_QUADODO P_GEN_EVO_POKEMON +#define P_FAMILY_DODOZEN P_GEN_EVO_POKEMON +#define P_FAMILY_PRECIPED P_GEN_EVO_POKEMON +#define P_FAMILY_MANATII P_GEN_EVO_POKEMON +#define P_FAMILY_GUNK P_GEN_EVO_POKEMON +#define P_FAMILY_SKUM P_GEN_EVO_POKEMON +#define P_FAMILY_ANENEMY P_GEN_EVO_POKEMON +#define P_FAMILY_GLAISHELL P_GEN_EVO_POKEMON +#define P_FAMILY_GENGONE P_GEN_EVO_POKEMON +#define P_FAMILY_POLTERGAST P_GEN_EVO_POKEMON +#define P_FAMILY_GRIMM P_GEN_EVO_POKEMON +#define P_FAMILY_PLATNIX P_GEN_EVO_POKEMON +#define P_FAMILY_OBSIDIANIX P_GEN_EVO_POKEMON +#define P_FAMILY_STALAGMIX P_GEN_EVO_POKEMON +#define P_FAMILY_LULLOO P_GEN_EVO_POKEMON +#define P_FAMILY_SOMNISOOTH P_GEN_EVO_POKEMON +#define P_FAMILY_KRAKLAW P_GEN_EVO_POKEMON +#define P_FAMILY_TEKLAWNO P_GEN_EVO_POKEMON +#define P_FAMILY_ELECTRODES P_GEN_EVO_POKEMON +#define P_FAMILY_ELECTRODEX P_GEN_EVO_POKEMON +#define P_FAMILY_ELECTRODEM P_GEN_EVO_POKEMON +#define P_FAMILY_EXEGGITY P_GEN_EVO_POKEMON +#define P_FAMILY_EXEGGTRIC P_GEN_EVO_POKEMON +#define P_FAMILY_OSSELOBBER P_GEN_EVO_POKEMON +#define P_FAMILY_WRAIWRATH P_GEN_EVO_POKEMON +#define P_FAMILY_CLEEVOYANT P_GEN_EVO_POKEMON +#define P_FAMILY_SPIRITULEE P_GEN_EVO_POKEMON +#define P_FAMILY_ENCHANCED P_GEN_EVO_POKEMON +#define P_FAMILY_RADIACHAN P_GEN_EVO_POKEMON +#define P_FAMILY_LICKILOLLY P_GEN_EVO_POKEMON +#define P_FAMILY_LICKILATO P_GEN_EVO_POKEMON +#define P_FAMILY_HEEVING P_GEN_EVO_POKEMON +#define P_FAMILY_CHOHKING P_GEN_EVO_POKEMON +#define P_FAMILY_RHYMARKABL P_GEN_EVO_POKEMON +#define P_FAMILY_RHYLIC P_GEN_EVO_POKEMON +#define P_FAMILY_RHYBORN P_GEN_EVO_POKEMON +#define P_FAMILY_GOGETTEY P_GEN_EVO_POKEMON +#define P_FAMILY_LUKKEY P_GEN_EVO_POKEMON +#define P_FAMILY_FORTUNITEY P_GEN_EVO_POKEMON +#define P_FAMILY_TANGATHER P_GEN_EVO_POKEMON +#define P_FAMILY_TANGOLIATH P_GEN_EVO_POKEMON +#define P_FAMILY_TANGRAPPLE P_GEN_EVO_POKEMON +#define P_FAMILY_KANGAKID P_GEN_EVO_POKEMON +#define P_FAMILY_KANGALLOUS P_GEN_EVO_POKEMON +#define P_FAMILY_KANGARUTAL P_GEN_EVO_POKEMON +#define P_FAMILY_LORDRA P_GEN_EVO_POKEMON +#define P_FAMILY_PINNADRA P_GEN_EVO_POKEMON +#define P_FAMILY_SEAREX P_GEN_EVO_POKEMON +#define P_FAMILY_CAPRISEA P_GEN_EVO_POKEMON +#define P_FAMILY_STARUS P_GEN_EVO_POKEMON +#define P_FAMILY_STARWE P_GEN_EVO_POKEMON +#define P_FAMILY_MR_JEST P_GEN_EVO_POKEMON +#define P_FAMILY_MR_FOOL P_GEN_EVO_POKEMON +#define P_FAMILY_RAZER P_GEN_EVO_POKEMON +#define P_FAMILY_CLAYMOR P_GEN_EVO_POKEMON +#define P_FAMILY_JYNKIES P_GEN_EVO_POKEMON +#define P_FAMILY_JEEPERS P_GEN_EVO_POKEMON +#define P_FAMILY_ELECTIVINE P_GEN_EVO_POKEMON +#define P_FAMILY_ELECTIWIZZ P_GEN_EVO_POKEMON +#define P_FAMILY_MAGMORE P_GEN_EVO_POKEMON +#define P_FAMILY_MAGMOLTEN P_GEN_EVO_POKEMON +#define P_FAMILY_PINSIRIOR P_GEN_EVO_POKEMON +#define P_FAMILY_ABYSSIR P_GEN_EVO_POKEMON +#define P_FAMILY_TAUROX P_GEN_EVO_POKEMON +#define P_FAMILY_OXENFREE P_GEN_EVO_POKEMON +#define P_FAMILY_HYDRADOS P_GEN_EVO_POKEMON +#define P_FAMILY_DRACOSMIC P_GEN_EVO_POKEMON +#define P_FAMILY_QUAZAR P_GEN_EVO_POKEMON +#define P_FAMILY_LOCHLASS P_GEN_EVO_POKEMON +#define P_FAMILY_NESSEA P_GEN_EVO_POKEMON +#define P_FAMILY_MORPHO P_GEN_EVO_POKEMON +#define P_FAMILY_METAMORPHO P_GEN_EVO_POKEMON +#define P_FAMILY_RIVEON P_GEN_EVO_POKEMON +#define P_FAMILY_BRINEON P_GEN_EVO_POKEMON +#define P_FAMILY_PLASMEON P_GEN_EVO_POKEMON +#define P_FAMILY_GALVEON P_GEN_EVO_POKEMON +#define P_FAMILY_SMOLDEON P_GEN_EVO_POKEMON +#define P_FAMILY_INFERNEON P_GEN_EVO_POKEMON +#define P_FAMILY_PORYGONX P_GEN_EVO_POKEMON +#define P_FAMILY_PORYGONQ P_GEN_EVO_POKEMON +#define P_FAMILY_PORYGON2A4 P_GEN_EVO_POKEMON +#define P_FAMILY_OMAPAL P_GEN_EVO_POKEMON +#define P_FAMILY_OMAGUS P_GEN_EVO_POKEMON +#define P_FAMILY_KABUTAK P_GEN_EVO_POKEMON +#define P_FAMILY_KABUSTION P_GEN_EVO_POKEMON +#define P_FAMILY_MANDILUFT P_GEN_EVO_POKEMON +#define P_FAMILY_AMBALITHIC P_GEN_EVO_POKEMON +#define P_FAMILY_ACTLAX P_GEN_EVO_POKEMON +#define P_FAMILY_GRIZZLAX P_GEN_EVO_POKEMON +#define P_FAMILY_SNOWONE P_GEN_EVO_POKEMON +#define P_FAMILY_FROSTUNUS P_GEN_EVO_POKEMON +#define P_FAMILY_SHOCKATOO P_GEN_EVO_POKEMON +#define P_FAMILY_VOLTDUO P_GEN_EVO_POKEMON +#define P_FAMILY_IGNITHREE P_GEN_EVO_POKEMON +#define P_FAMILY_INFERNTRI P_GEN_EVO_POKEMON +#define P_FAMILY_DRAGONIER P_GEN_EVO_POKEMON +#define P_FAMILY_DRAGONACE P_GEN_EVO_POKEMON +#define P_FAMILY_DRAGONTALE P_GEN_EVO_POKEMON +#define P_FAMILY_MEWTHREE P_GEN_EVO_POKEMON +#define P_FAMILY_MEWFOUR P_GEN_EVO_POKEMON +#define P_FAMILY_NYU P_GEN_EVO_POKEMON +#define P_FAMILY_IOTA P_GEN_EVO_POKEMON +#define P_FAMILY_MISSINGNO1 P_GEN_EVO_POKEMON +#define P_FAMILY_MISSINGNO2 P_GEN_EVO_POKEMON +#define P_FAMILY_MISSINGNO3 P_GEN_EVO_POKEMON +#define P_FAMILY_MISSINGNO4 P_GEN_EVO_POKEMON +#define P_FAMILY_MISSINGNO5 P_GEN_EVO_POKEMON +//Species File Update +#ifndef GUARD_CONSTANTS_SPECIES_H +#define GUARD_CONSTANTS_SPECIES_H + +#define SPECIES_NONE 355 +#define SPECIES_ECOSAUR 1573 +#define SPECIES_TERARISAUR 1574 +#define SPECIES_SYMBISAUR 1575 +#define SPECIES_CHARIGUANA 1576 +#define SPECIES_CHARIANA 1577 +#define SPECIES_CHARIATHAN 1578 +#define SPECIES_FERRAPIN 1579 +#define SPECIES_FORTOISE 1580 +#define SPECIES_TURTILLERY 1581 +#define SPECIES_BUTTEFLARE 1582 +#define SPECIES_PYREFREE 1583 +#define SPECIES_IMPSECT 1584 +#define SPECIES_BEEBRUTE 1585 +#define SPECIES_DRONARCH 1586 +#define SPECIES_SEPISTRIKE 1587 +#define SPECIES_PIDGAERO 1588 +#define SPECIES_PIDGEOZONE 1589 +#define SPECIES_PIDGEPHYR 1590 +#define SPECIES_RATTCHET 1591 +#define SPECIES_RATTARULE 1592 +#define SPECIES_SNEEROW 1593 +#define SPECIES_ORNITHOW 1594 +#define SPECIES_NOHTYP 1595 +#define SPECIES_ADNOKANA 1596 +#define SPECIES_GOROCHU 1597 +#define SPECIES_STROMACHU 1598 +#define SPECIES_SANDSLAM 1599 +#define SPECIES_FERODILLO 1600 +#define SPECIES_NIDOREGAL 1601 +#define SPECIES_NIDOARCHY 1602 +#define SPECIES_NIDORULY 1603 +#define SPECIES_NIDOMINATE 1604 +#define SPECIES_CLEFAEFAE 1605 +#define SPECIES_CLEFANAUT 1606 +#define SPECIES_SPIRITALES 1607 +#define SPECIES_YOKAYUBI 1608 +#define SPECIES_GIGGLYHUFF 1609 +#define SPECIES_BOGGLYFUFF 1610 +#define SPECIES_POLABAT 1611 +#define SPECIES_VISIBAT 1612 +#define SPECIES_HORRIBAT 1613 +#define SPECIES_RAFFLURK 1614 +#define SPECIES_CONCORPSIA 1615 +#define SPECIES_SECTASITE 1616 +#define SPECIES_FUNGALITH 1617 +#define SPECIES_VENOMENA 1618 +#define SPECIES_VENOMENON 1619 +#define SPECIES_DUGROUPLE 1620 +#define SPECIES_UNEARTHLET 1621 +#define SPECIES_DIGLENOID 1622 +#define SPECIES_FELANKH 1623 +#define SPECIES_PATRAPHINX 1624 +#define SPECIES_GILDUCK 1625 +#define SPECIES_PLATINUPUS 1626 +#define SPECIES_GORILLASH 1627 +#define SPECIES_BONUMBELL 1628 +#define SPECIES_SINGESHA 1629 +#define SPECIES_GUARDIANCE 1630 +#define SPECIES_POLITOES 1631 +#define SPECIES_POLIWISE 1632 +#define SPECIES_POLIATH 1633 +#define SPECIES_SIMSALABIM 1634 +#define SPECIES_VOHOODU 1635 +#define SPECIES_TZARKARTZ 1636 +#define SPECIES_MACHULK 1637 +#define SPECIES_ABOMACHULK 1638 +#define SPECIES_MACHITAN 1639 +#define SPECIES_MUCKTRIBEL 1640 +#define SPECIES_CARNABELL 1641 +#define SPECIES_DEVLORA 1642 +#define SPECIES_TENTACATE 1643 +#define SPECIES_TENTABOMA 1644 +#define SPECIES_SLAGOLEM 1645 +#define SPECIES_MOLTREM 1646 +#define SPECIES_VOLCANICOL 1647 +#define SPECIES_COMBUSTANG 1648 +#define SPECIES_KNIGHTMARE 1649 +#define SPECIES_SLOWMATE 1650 +#define SPECIES_SLOWCHUM 1651 +#define SPECIES_MAGNEMELD 1652 +#define SPECIES_MAGNEMASTR 1653 +#define SPECIES_FORFOWLD 1654 +#define SPECIES_FOWLNTOM 1655 +#define SPECIES_QUADODO 1656 +#define SPECIES_DODOZEN 1657 +#define SPECIES_PRECIPED 1658 +#define SPECIES_MANATII 1659 +#define SPECIES_GUNK 1660 +#define SPECIES_SKUM 1661 +#define SPECIES_ANENEMY 1662 +#define SPECIES_GLAISHELL 1663 +#define SPECIES_GENGONE 1664 +#define SPECIES_POLTERGAST 1665 +#define SPECIES_GRIMM 1666 +#define SPECIES_PLATNIX 1667 +#define SPECIES_OBSIDIANIX 1668 +#define SPECIES_STALAGMIX 1669 +#define SPECIES_LULLOO 1670 +#define SPECIES_SOMNISOOTH 1671 +#define SPECIES_KRAKLAW 1672 +#define SPECIES_TEKLAWNO 1673 +#define SPECIES_ELECTRODES 1674 +#define SPECIES_ELECTRODEX 1675 +#define SPECIES_ELECTRODEM 1676 +#define SPECIES_EXEGGITY 1677 +#define SPECIES_EXEGGTRIC 1678 +#define SPECIES_OSSELOBBER 1679 +#define SPECIES_WRAIWRATH 1680 +#define SPECIES_CLEEVOYANT 1681 +#define SPECIES_SPIRITULEE 1682 +#define SPECIES_ENCHANCED 1683 +#define SPECIES_RADIACHAN 1684 +#define SPECIES_LICKILOLLY 1685 +#define SPECIES_LICKILATO 1686 +#define SPECIES_HEEVING 1687 +#define SPECIES_CHOHKING 1688 +#define SPECIES_RHYMARKABL 1689 +#define SPECIES_RHYLIC 1690 +#define SPECIES_RHYBORN 1691 +#define SPECIES_GOGETTEY 1692 +#define SPECIES_LUKKEY 1693 +#define SPECIES_FORTUNITEY 1694 +#define SPECIES_TANGATHER 1695 +#define SPECIES_TANGOLIATH 1696 +#define SPECIES_TANGRAPPLE 1697 +#define SPECIES_KANGAKID 1698 +#define SPECIES_KANGALLOUS 1699 +#define SPECIES_KANGARUTAL 1700 +#define SPECIES_LORDRA 1701 +#define SPECIES_PINNADRA 1702 +#define SPECIES_SEAREX 1703 +#define SPECIES_CAPRISEA 1704 +#define SPECIES_STARUS 1705 +#define SPECIES_STARWE 1706 +#define SPECIES_MR_JEST 1707 +#define SPECIES_MR_FOOL 1708 +#define SPECIES_RAZER 1709 +#define SPECIES_CLAYMOR 1710 +#define SPECIES_JYNKIES 1711 +#define SPECIES_JEEPERS 1712 +#define SPECIES_ELECTIVINE 1713 +#define SPECIES_ELECTIWIZZ 1714 +#define SPECIES_MAGMORE 1715 +#define SPECIES_MAGMOLTEN 1716 +#define SPECIES_PINSIRIOR 1717 +#define SPECIES_ABYSSIR 1718 +#define SPECIES_TAUROX 1719 +#define SPECIES_OXENFREE 1720 +#define SPECIES_HYDRADOS 1721 +#define SPECIES_DRACOSMIC 1722 +#define SPECIES_QUAZAR 1723 +#define SPECIES_LOCHLASS 1724 +#define SPECIES_NESSEA 1725 +#define SPECIES_MORPHO 1726 +#define SPECIES_METAMORPHO 1727 +#define SPECIES_RIVEON 1728 +#define SPECIES_BRINEON 1729 +#define SPECIES_PLASMEON 1730 +#define SPECIES_GALVEON 1731 +#define SPECIES_SMOLDEON 1732 +#define SPECIES_INFERNEON 1733 +#define SPECIES_PORYGONX 1734 +#define SPECIES_PORYGONQ 1735 +#define SPECIES_PORYGON2A4 1736 +#define SPECIES_OMAPAL 1737 +#define SPECIES_OMAGUS 1738 +#define SPECIES_KABUTAK 1739 +#define SPECIES_KABUSTION 1740 +#define SPECIES_MANDILUFT 1741 +#define SPECIES_AMBALITHIC 1742 +#define SPECIES_ACTLAX 1743 +#define SPECIES_GRIZZLAX 1744 +#define SPECIES_SNOWONE 1745 +#define SPECIES_FROSTUNUS 1746 +#define SPECIES_SHOCKATOO 1747 +#define SPECIES_VOLTDUO 1748 +#define SPECIES_IGNITHREE 1749 +#define SPECIES_INFERNTRI 1750 +#define SPECIES_DRAGONIER 1751 +#define SPECIES_DRAGONACE 1752 +#define SPECIES_DRAGONTALE 1753 +#define SPECIES_MEWTHREE 1754 +#define SPECIES_MEWFOUR 1755 +#define SPECIES_NYU 1756 +#define SPECIES_IOTA 1757 +#define SPECIES_MISSINGNO1 1758 +#define SPECIES_MISSINGNO2 1759 +#define SPECIES_MISSINGNO3 1760 +#define SPECIES_MISSINGNO4 1761 +#define SPECIES_MISSINGNO5 1762 +//end of program \ No newline at end of file diff --git a/pokeemerald-tools/pkmndata.xlsx b/pokeemerald-tools/pkmndata.xlsx index b4a6f2094c..9bcf80ae8c 100644 Binary files a/pokeemerald-tools/pkmndata.xlsx and b/pokeemerald-tools/pkmndata.xlsx differ diff --git a/pokeemerald-tools/pokedex.h b/pokeemerald-tools/pokedex.h new file mode 100644 index 0000000000..3cddb9485f --- /dev/null +++ b/pokeemerald-tools/pokedex.h @@ -0,0 +1,768 @@ +//National Dex Start +#ifndef GUARD_CONSTANTS_POKEDEX_H +#define GUARD_CONSTANTS_POKEDEX_H +// National Pokédex order +// These constants are NOT disabled by P_GEN_X_POKEMON to keep pokedex_orders.h clean. +enum NationalDexOrder +{ + NATIONAL_DEX_NONE, + NATIONAL_DEX_BULBASAUR, + NATIONAL_DEX_IVYSAUR, + NATIONAL_DEX_VENUSAUR, + NATIONAL_DEX_ECOSAUR, + NATIONAL_DEX_TERARISAUR, + NATIONAL_DEX_SYMBISAUR, + NATIONAL_DEX_CHARMANDER, + NATIONAL_DEX_CHARMELEON, + NATIONAL_DEX_CHARIZARD, + NATIONAL_DEX_CHARIGUANA, + NATIONAL_DEX_CHARIANA, + NATIONAL_DEX_CHARIATHAN, + NATIONAL_DEX_SQUIRTLE, + NATIONAL_DEX_WARTORTLE, + NATIONAL_DEX_BLASTOISE, + NATIONAL_DEX_FERRAPIN, + NATIONAL_DEX_FORTOISE, + NATIONAL_DEX_TURTILLERY, + NATIONAL_DEX_CATERPIE, + NATIONAL_DEX_METAPOD, + NATIONAL_DEX_BUTTERFREE, + NATIONAL_DEX_BUTTEFLARE, + NATIONAL_DEX_PYREFREE, + NATIONAL_DEX_IMPSECT, + NATIONAL_DEX_WEEDLE, + NATIONAL_DEX_KAKUNA, + NATIONAL_DEX_BEEDRILL, + NATIONAL_DEX_BEEBRUTE, + NATIONAL_DEX_DRONARCH, + NATIONAL_DEX_SEPISTRIKE, + NATIONAL_DEX_PIDGEY, + NATIONAL_DEX_PIDGEOTTO, + NATIONAL_DEX_PIDGEOT, + NATIONAL_DEX_PIDGAERO, + NATIONAL_DEX_PIDGEOZONE, + NATIONAL_DEX_PIDGEPHYR, + NATIONAL_DEX_RATTATA, + NATIONAL_DEX_RATICATE, + NATIONAL_DEX_RATTCHET, + NATIONAL_DEX_RATTARULE, + NATIONAL_DEX_SPEAROW, + NATIONAL_DEX_FEAROW, + NATIONAL_DEX_SNEEROW, + NATIONAL_DEX_ORNITHOW, + NATIONAL_DEX_EKANS, + NATIONAL_DEX_ARBOK, + NATIONAL_DEX_NOHTYP, + NATIONAL_DEX_ADNOKANA, + NATIONAL_DEX_PIKACHU, + NATIONAL_DEX_RAICHU, + NATIONAL_DEX_GOROCHU, + NATIONAL_DEX_STROMACHU, + NATIONAL_DEX_SANDSHREW, + NATIONAL_DEX_SANDSLASH, + NATIONAL_DEX_SANDSLAM, + NATIONAL_DEX_FERODILLO, + NATIONAL_DEX_NIDORAN_F, + NATIONAL_DEX_NIDORINA, + NATIONAL_DEX_NIDOQUEEN, + NATIONAL_DEX_NIDOREGAL, + NATIONAL_DEX_NIDOARCHY, + NATIONAL_DEX_NIDORAN_M, + NATIONAL_DEX_NIDORINO, + NATIONAL_DEX_NIDOKING, + NATIONAL_DEX_NIDORULY, + NATIONAL_DEX_NIDOMINATE, + NATIONAL_DEX_CLEFAIRY, + NATIONAL_DEX_CLEFABLE, + NATIONAL_DEX_CLEFAEFAE, + NATIONAL_DEX_CLEFANAUT, + NATIONAL_DEX_VULPIX, + NATIONAL_DEX_NINETALES, + NATIONAL_DEX_SPIRITALES, + NATIONAL_DEX_YOKAYUBI, + NATIONAL_DEX_JIGGLYPUFF, + NATIONAL_DEX_WIGGLYTUFF, + NATIONAL_DEX_GIGGLYHUFF, + NATIONAL_DEX_BOGGLYFUFF, + NATIONAL_DEX_ZUBAT, + NATIONAL_DEX_GOLBAT, + NATIONAL_DEX_CROBAT, + NATIONAL_DEX_POLABAT, + NATIONAL_DEX_VISIBAT, + NATIONAL_DEX_HORRIBAT, + NATIONAL_DEX_ODDISH, + NATIONAL_DEX_GLOOM, + NATIONAL_DEX_VILEPLUME, + NATIONAL_DEX_RAFFLURK, + NATIONAL_DEX_CONCORPSIA, + NATIONAL_DEX_PARAS, + NATIONAL_DEX_PARASECT, + NATIONAL_DEX_SECTASITE, + NATIONAL_DEX_FUNGALITH, + NATIONAL_DEX_VENONAT, + NATIONAL_DEX_VENOMOTH, + NATIONAL_DEX_VENOMENA, + NATIONAL_DEX_VENOMENON, + NATIONAL_DEX_DIGLETT, + NATIONAL_DEX_DUGTRIO, + NATIONAL_DEX_DUGROUPLE, + NATIONAL_DEX_UNEARTHLET, + NATIONAL_DEX_DIGLENOID, + NATIONAL_DEX_MEOWTH, + NATIONAL_DEX_PERSIAN, + NATIONAL_DEX_FELANKH, + NATIONAL_DEX_PATRAPHINX, + NATIONAL_DEX_PSYDUCK, + NATIONAL_DEX_GOLDUCK, + NATIONAL_DEX_GILDUCK, + NATIONAL_DEX_PLATINUPUS, + NATIONAL_DEX_MANKEY, + NATIONAL_DEX_PRIMEAPE, + NATIONAL_DEX_GORILLASH, + NATIONAL_DEX_BONUMBELL, + NATIONAL_DEX_GROWLITHE, + NATIONAL_DEX_ARCANINE, + NATIONAL_DEX_SINGESHA, + NATIONAL_DEX_GUARDIANCE, + NATIONAL_DEX_POLIWAG, + NATIONAL_DEX_POLIWHIRL, + NATIONAL_DEX_POLIWRATH, + NATIONAL_DEX_POLITOES, + NATIONAL_DEX_POLIWISE, + NATIONAL_DEX_POLIATH, + NATIONAL_DEX_ABRA, + NATIONAL_DEX_KADABRA, + NATIONAL_DEX_ALAKAZAM, + NATIONAL_DEX_SIMSALABIM, + NATIONAL_DEX_VOHOODU, + NATIONAL_DEX_TZARKARTZ, + NATIONAL_DEX_MACHOP, + NATIONAL_DEX_MACHOKE, + NATIONAL_DEX_MACHAMP, + NATIONAL_DEX_MACHULK, + NATIONAL_DEX_ABOMACHULK, + NATIONAL_DEX_MACHITAN, + NATIONAL_DEX_BELLSPROUT, + NATIONAL_DEX_WEEPINBELL, + NATIONAL_DEX_VICTREEBEL, + NATIONAL_DEX_MUCKTRIBEL, + NATIONAL_DEX_CARNABELL, + NATIONAL_DEX_DEVLORA, + NATIONAL_DEX_TENTACOOL, + NATIONAL_DEX_TENTACRUEL, + NATIONAL_DEX_TENTACATE, + NATIONAL_DEX_TENTABOMA, + NATIONAL_DEX_GEODUDE, + NATIONAL_DEX_GRAVELER, + NATIONAL_DEX_GOLEM, + NATIONAL_DEX_SLAGOLEM, + NATIONAL_DEX_MOLTREM, + NATIONAL_DEX_VOLCANICOL, + NATIONAL_DEX_PONYTA, + NATIONAL_DEX_RAPIDASH, + NATIONAL_DEX_COMBUSTANG, + NATIONAL_DEX_KNIGHTMARE, + NATIONAL_DEX_SLOWPOKE, + NATIONAL_DEX_SLOWBRO, + NATIONAL_DEX_SLOWMATE, + NATIONAL_DEX_SLOWCHUM, + NATIONAL_DEX_MAGNEMITE, + NATIONAL_DEX_MAGNETON, + NATIONAL_DEX_MAGNEZONE, + NATIONAL_DEX_MAGNEMELD, + NATIONAL_DEX_MAGNEMASTR, + NATIONAL_DEX_FARFETCHD, + NATIONAL_DEX_FORFOWLD, + NATIONAL_DEX_FOWLNTOM, + NATIONAL_DEX_DODUO, + NATIONAL_DEX_DODRIO, + NATIONAL_DEX_QUADODO, + NATIONAL_DEX_DODOZEN, + NATIONAL_DEX_SEEL, + NATIONAL_DEX_DEWGONG, + NATIONAL_DEX_PRECIPED, + NATIONAL_DEX_MANATII, + NATIONAL_DEX_GRIMER, + NATIONAL_DEX_MUK, + NATIONAL_DEX_GUNK, + NATIONAL_DEX_SKUM, + NATIONAL_DEX_SHELLDER, + NATIONAL_DEX_CLOYSTER, + NATIONAL_DEX_ANENEMY, + NATIONAL_DEX_GLAISHELL, + NATIONAL_DEX_GASTLY, + NATIONAL_DEX_HAUNTER, + NATIONAL_DEX_GENGAR, + NATIONAL_DEX_GENGONE, + NATIONAL_DEX_POLTERGAST, + NATIONAL_DEX_GRIMM, + NATIONAL_DEX_ONIX, + NATIONAL_DEX_STEELIX, + NATIONAL_DEX_PLATNIX, + NATIONAL_DEX_OBSIDIANIX, + NATIONAL_DEX_STALAGMIX, + NATIONAL_DEX_DROWZEE, + NATIONAL_DEX_HYPNO, + NATIONAL_DEX_LULLOO, + NATIONAL_DEX_SOMNISOOTH, + NATIONAL_DEX_KRABBY, + NATIONAL_DEX_KINGLER, + NATIONAL_DEX_KRAKLAW, + NATIONAL_DEX_TEKLAWNO, + NATIONAL_DEX_VOLTORB, + NATIONAL_DEX_ELECTRODE, + NATIONAL_DEX_ELECTRODES, + NATIONAL_DEX_ELECTRODEX, + NATIONAL_DEX_ELECTRODEM, + NATIONAL_DEX_EXEGGCUTE, + NATIONAL_DEX_EXEGGUTOR, + NATIONAL_DEX_EXEGGITY, + NATIONAL_DEX_EXEGGTRIC, + NATIONAL_DEX_CUBONE, + NATIONAL_DEX_MAROWAK, + NATIONAL_DEX_OSSELOBBER, + NATIONAL_DEX_WRAIWRATH, + NATIONAL_DEX_HITMONLEE, + NATIONAL_DEX_CLEEVOYANT, + NATIONAL_DEX_SPIRITULEE, + NATIONAL_DEX_HITMONCHAN, + NATIONAL_DEX_ENCHANCED, + NATIONAL_DEX_RADIACHAN, + NATIONAL_DEX_LICKITUNG, + NATIONAL_DEX_LICKILICKY, + NATIONAL_DEX_LICKILOLLY, + NATIONAL_DEX_LICKILATO, + NATIONAL_DEX_KOFFING, + NATIONAL_DEX_WEEZING, + NATIONAL_DEX_HEEVING, + NATIONAL_DEX_CHOHKING, + NATIONAL_DEX_RHYHORN, + NATIONAL_DEX_RHYDON, + NATIONAL_DEX_RHYPERIOR, + NATIONAL_DEX_RHYMARKABL, + NATIONAL_DEX_RHYLIC, + NATIONAL_DEX_RHYBORN, + NATIONAL_DEX_CHANSEY, + NATIONAL_DEX_BLISSEY, + NATIONAL_DEX_GOGETTEY, + NATIONAL_DEX_LUKKEY, + NATIONAL_DEX_FORTUNITEY, + NATIONAL_DEX_TANGELA, + NATIONAL_DEX_TANGROWTH, + NATIONAL_DEX_TANGATHER, + NATIONAL_DEX_TANGOLIATH, + NATIONAL_DEX_TANGRAPPLE, + NATIONAL_DEX_KANGAKID, + NATIONAL_DEX_KANGASKHAN, + NATIONAL_DEX_KANGALLOUS, + NATIONAL_DEX_KANGARUTAL, + NATIONAL_DEX_HORSEA, + NATIONAL_DEX_SEADRA, + NATIONAL_DEX_KINGDRA, + NATIONAL_DEX_LORDRA, + NATIONAL_DEX_PINNADRA, + NATIONAL_DEX_GOLDEEN, + NATIONAL_DEX_SEAKING, + NATIONAL_DEX_SEAREX, + NATIONAL_DEX_CAPRISEA, + NATIONAL_DEX_STARYU, + NATIONAL_DEX_STARMIE, + NATIONAL_DEX_STARUS, + NATIONAL_DEX_STARWE, + NATIONAL_DEX_MR_MIME, + NATIONAL_DEX_MR_JEST, + NATIONAL_DEX_MR_FOOL, + NATIONAL_DEX_SCYTHER, + NATIONAL_DEX_SCIZOR, + NATIONAL_DEX_RAZER, + NATIONAL_DEX_CLAYMOR, + NATIONAL_DEX_JYNX, + NATIONAL_DEX_JYNKIES, + NATIONAL_DEX_JEEPERS, + NATIONAL_DEX_ELECTABUZZ, + NATIONAL_DEX_ELECTIVIRE, + NATIONAL_DEX_ELECTIVINE, + NATIONAL_DEX_ELECTIWIZZ, + NATIONAL_DEX_MAGMAR, + NATIONAL_DEX_MAGMORTAR, + NATIONAL_DEX_MAGMORE, + NATIONAL_DEX_MAGMOLTEN, + NATIONAL_DEX_PINSIR, + NATIONAL_DEX_PINSIRIOR, + NATIONAL_DEX_ABYSSIR, + NATIONAL_DEX_TAUROS, + NATIONAL_DEX_TAUROX, + NATIONAL_DEX_OXENFREE, + NATIONAL_DEX_MAGIKARP, + NATIONAL_DEX_GYARADOS, + NATIONAL_DEX_HYDRADOS, + NATIONAL_DEX_DRACOSMIC, + NATIONAL_DEX_QUAZAR, + NATIONAL_DEX_LAPRAS, + NATIONAL_DEX_LOCHLASS, + NATIONAL_DEX_NESSEA, + NATIONAL_DEX_DITTO, + NATIONAL_DEX_MORPHO, + NATIONAL_DEX_METAMORPHO, + NATIONAL_DEX_EEVEE, + NATIONAL_DEX_VAPOREON, + NATIONAL_DEX_RIVEON, + NATIONAL_DEX_BRINEON, + NATIONAL_DEX_JOLTEON, + NATIONAL_DEX_PLASMEON, + NATIONAL_DEX_GALVEON, + NATIONAL_DEX_FLAREON, + NATIONAL_DEX_SMOLDEON, + NATIONAL_DEX_INFERNEON, + NATIONAL_DEX_PORYGON, + NATIONAL_DEX_PORYGON2, + NATIONAL_DEX_PORYGONZ, + NATIONAL_DEX_PORYGONX, + NATIONAL_DEX_PORYGONQ, + NATIONAL_DEX_PORYGON2A4, + NATIONAL_DEX_OMANYTE, + NATIONAL_DEX_OMASTAR, + NATIONAL_DEX_OMAPAL, + NATIONAL_DEX_OMAGUS, + NATIONAL_DEX_KABUTO, + NATIONAL_DEX_KABUTOPS, + NATIONAL_DEX_KABUTAK, + NATIONAL_DEX_KABUSTION, + NATIONAL_DEX_AERODACTYL, + NATIONAL_DEX_MANDILUFT, + NATIONAL_DEX_AMBALITHIC, + NATIONAL_DEX_SNORLAX, + NATIONAL_DEX_ACTLAX, + NATIONAL_DEX_GRIZZLAX, + NATIONAL_DEX_ARTICUNO, + NATIONAL_DEX_SNOWONE, + NATIONAL_DEX_FROSTUNUS, + NATIONAL_DEX_ZAPDOS, + NATIONAL_DEX_SHOCKATOO, + NATIONAL_DEX_VOLTDUO, + NATIONAL_DEX_MOLTRES, + NATIONAL_DEX_IGNITHREE, + NATIONAL_DEX_INFERNTRI, + NATIONAL_DEX_DRATINI, + NATIONAL_DEX_DRAGONAIR, + NATIONAL_DEX_DRAGONITE, + NATIONAL_DEX_DRAGONIER, + NATIONAL_DEX_DRAGONACE, + NATIONAL_DEX_DRAGONTALE, + NATIONAL_DEX_MEWTWO, + NATIONAL_DEX_MEWTHREE, + NATIONAL_DEX_MEWFOUR, + NATIONAL_DEX_MEW, + NATIONAL_DEX_NYU, + NATIONAL_DEX_IOTA, + NATIONAL_DEX_MISSINGNO1, + NATIONAL_DEX_MISSINGNO2, + NATIONAL_DEX_MISSINGNO3, + NATIONAL_DEX_MISSINGNO4, + NATIONAL_DEX_MISSINGNO5, +}; + +#define NATIONAL_DEX_COUNT NATIONAL_DEX_MISSINGNO5 +#define POKEMON_SLOTS_NUMBER NATIONAL_DEX_COUNT + 1 +// Kanto Pokédex order + +enum KantoDexOrder +{ + KANTO_DEX_NONE, + //KANTO Dex Start + KANTO_DEX_BULBASAUR, + KANTO_DEX_IVYSAUR, + KANTO_DEX_VENUSAUR, + KANTO_DEX_ECOSAUR, + KANTO_DEX_TERARISAUR, + KANTO_DEX_SYMBISAUR, + KANTO_DEX_CHARMANDER, + KANTO_DEX_CHARMELEON, + KANTO_DEX_CHARIZARD, + KANTO_DEX_CHARIGUANA, + KANTO_DEX_CHARIANA, + KANTO_DEX_CHARIATHAN, + KANTO_DEX_SQUIRTLE, + KANTO_DEX_WARTORTLE, + KANTO_DEX_BLASTOISE, + KANTO_DEX_FERRAPIN, + KANTO_DEX_FORTOISE, + KANTO_DEX_TURTILLERY, + KANTO_DEX_CATERPIE, + KANTO_DEX_METAPOD, + KANTO_DEX_BUTTERFREE, + KANTO_DEX_BUTTEFLARE, + KANTO_DEX_PYREFREE, + KANTO_DEX_IMPSECT, + KANTO_DEX_WEEDLE, + KANTO_DEX_KAKUNA, + KANTO_DEX_BEEDRILL, + KANTO_DEX_BEEBRUTE, + KANTO_DEX_DRONARCH, + KANTO_DEX_SEPISTRIKE, + KANTO_DEX_PIDGEY, + KANTO_DEX_PIDGEOTTO, + KANTO_DEX_PIDGEOT, + KANTO_DEX_PIDGAERO, + KANTO_DEX_PIDGEOZONE, + KANTO_DEX_PIDGEPHYR, + KANTO_DEX_RATTATA, + KANTO_DEX_RATICATE, + KANTO_DEX_RATTCHET, + KANTO_DEX_RATTARULE, + KANTO_DEX_SPEAROW, + KANTO_DEX_FEAROW, + KANTO_DEX_SNEEROW, + KANTO_DEX_ORNITHOW, + KANTO_DEX_EKANS, + KANTO_DEX_ARBOK, + KANTO_DEX_NOHTYP, + KANTO_DEX_ADNOKANA, + KANTO_DEX_PIKACHU, + KANTO_DEX_RAICHU, + KANTO_DEX_GOROCHU, + KANTO_DEX_STROMACHU, + KANTO_DEX_SANDSHREW, + KANTO_DEX_SANDSLASH, + KANTO_DEX_SANDSLAM, + KANTO_DEX_FERODILLO, + KANTO_DEX_NIDORAN_F, + KANTO_DEX_NIDORINA, + KANTO_DEX_NIDOQUEEN, + KANTO_DEX_NIDOREGAL, + KANTO_DEX_NIDOARCHY, + KANTO_DEX_NIDORAN_M, + KANTO_DEX_NIDORINO, + KANTO_DEX_NIDOKING, + KANTO_DEX_NIDORULY, + KANTO_DEX_NIDOMINATE, + KANTO_DEX_CLEFAIRY, + KANTO_DEX_CLEFABLE, + KANTO_DEX_CLEFAEFAE, + KANTO_DEX_CLEFANAUT, + KANTO_DEX_VULPIX, + KANTO_DEX_NINETALES, + KANTO_DEX_SPIRITALES, + KANTO_DEX_YOKAYUBI, + KANTO_DEX_JIGGLYPUFF, + KANTO_DEX_WIGGLYTUFF, + KANTO_DEX_GIGGLYHUFF, + KANTO_DEX_BOGGLYFUFF, + KANTO_DEX_ZUBAT, + KANTO_DEX_GOLBAT, + KANTO_DEX_CROBAT, + KANTO_DEX_POLABAT, + KANTO_DEX_VISIBAT, + KANTO_DEX_HORRIBAT, + KANTO_DEX_ODDISH, + KANTO_DEX_GLOOM, + KANTO_DEX_VILEPLUME, + KANTO_DEX_RAFFLURK, + KANTO_DEX_CONCORPSIA, + KANTO_DEX_PARAS, + KANTO_DEX_PARASECT, + KANTO_DEX_SECTASITE, + KANTO_DEX_FUNGALITH, + KANTO_DEX_VENONAT, + KANTO_DEX_VENOMOTH, + KANTO_DEX_VENOMENA, + KANTO_DEX_VENOMENON, + KANTO_DEX_DIGLETT, + KANTO_DEX_DUGTRIO, + KANTO_DEX_DUGROUPLE, + KANTO_DEX_UNEARTHLET, + KANTO_DEX_DIGLENOID, + KANTO_DEX_MEOWTH, + KANTO_DEX_PERSIAN, + KANTO_DEX_FELANKH, + KANTO_DEX_PATRAPHINX, + KANTO_DEX_PSYDUCK, + KANTO_DEX_GOLDUCK, + KANTO_DEX_GILDUCK, + KANTO_DEX_PLATINUPUS, + KANTO_DEX_MANKEY, + KANTO_DEX_PRIMEAPE, + KANTO_DEX_GORILLASH, + KANTO_DEX_BONUMBELL, + KANTO_DEX_GROWLITHE, + KANTO_DEX_ARCANINE, + KANTO_DEX_SINGESHA, + KANTO_DEX_GUARDIANCE, + KANTO_DEX_POLIWAG, + KANTO_DEX_POLIWHIRL, + KANTO_DEX_POLIWRATH, + KANTO_DEX_POLITOES, + KANTO_DEX_POLIWISE, + KANTO_DEX_POLIATH, + KANTO_DEX_ABRA, + KANTO_DEX_KADABRA, + KANTO_DEX_ALAKAZAM, + KANTO_DEX_SIMSALABIM, + KANTO_DEX_VOHOODU, + KANTO_DEX_TZARKARTZ, + KANTO_DEX_MACHOP, + KANTO_DEX_MACHOKE, + KANTO_DEX_MACHAMP, + KANTO_DEX_MACHULK, + KANTO_DEX_ABOMACHULK, + KANTO_DEX_MACHITAN, + KANTO_DEX_BELLSPROUT, + KANTO_DEX_WEEPINBELL, + KANTO_DEX_VICTREEBEL, + KANTO_DEX_MUCKTRIBEL, + KANTO_DEX_CARNABELL, + KANTO_DEX_DEVLORA, + KANTO_DEX_TENTACOOL, + KANTO_DEX_TENTACRUEL, + KANTO_DEX_TENTACATE, + KANTO_DEX_TENTABOMA, + KANTO_DEX_GEODUDE, + KANTO_DEX_GRAVELER, + KANTO_DEX_GOLEM, + KANTO_DEX_SLAGOLEM, + KANTO_DEX_MOLTREM, + KANTO_DEX_VOLCANICOL, + KANTO_DEX_PONYTA, + KANTO_DEX_RAPIDASH, + KANTO_DEX_COMBUSTANG, + KANTO_DEX_KNIGHTMARE, + KANTO_DEX_SLOWPOKE, + KANTO_DEX_SLOWBRO, + KANTO_DEX_SLOWMATE, + KANTO_DEX_SLOWCHUM, + KANTO_DEX_MAGNEMITE, + KANTO_DEX_MAGNETON, + KANTO_DEX_MAGNEZONE, + KANTO_DEX_MAGNEMELD, + KANTO_DEX_MAGNEMASTR, + KANTO_DEX_FARFETCHD, + KANTO_DEX_FORFOWLD, + KANTO_DEX_FOWLNTOM, + KANTO_DEX_DODUO, + KANTO_DEX_DODRIO, + KANTO_DEX_QUADODO, + KANTO_DEX_DODOZEN, + KANTO_DEX_SEEL, + KANTO_DEX_DEWGONG, + KANTO_DEX_PRECIPED, + KANTO_DEX_MANATII, + KANTO_DEX_GRIMER, + KANTO_DEX_MUK, + KANTO_DEX_GUNK, + KANTO_DEX_SKUM, + KANTO_DEX_SHELLDER, + KANTO_DEX_CLOYSTER, + KANTO_DEX_ANENEMY, + KANTO_DEX_GLAISHELL, + KANTO_DEX_GASTLY, + KANTO_DEX_HAUNTER, + KANTO_DEX_GENGAR, + KANTO_DEX_GENGONE, + KANTO_DEX_POLTERGAST, + KANTO_DEX_GRIMM, + KANTO_DEX_ONIX, + KANTO_DEX_STEELIX, + KANTO_DEX_PLATNIX, + KANTO_DEX_OBSIDIANIX, + KANTO_DEX_STALAGMIX, + KANTO_DEX_DROWZEE, + KANTO_DEX_HYPNO, + KANTO_DEX_LULLOO, + KANTO_DEX_SOMNISOOTH, + KANTO_DEX_KRABBY, + KANTO_DEX_KINGLER, + KANTO_DEX_KRAKLAW, + KANTO_DEX_TEKLAWNO, + KANTO_DEX_VOLTORB, + KANTO_DEX_ELECTRODE, + KANTO_DEX_ELECTRODES, + KANTO_DEX_ELECTRODEX, + KANTO_DEX_ELECTRODEM, + KANTO_DEX_EXEGGCUTE, + KANTO_DEX_EXEGGUTOR, + KANTO_DEX_EXEGGITY, + KANTO_DEX_EXEGGTRIC, + KANTO_DEX_CUBONE, + KANTO_DEX_MAROWAK, + KANTO_DEX_OSSELOBBER, + KANTO_DEX_WRAIWRATH, + KANTO_DEX_HITMONLEE, + KANTO_DEX_CLEEVOYANT, + KANTO_DEX_SPIRITULEE, + KANTO_DEX_HITMONCHAN, + KANTO_DEX_ENCHANCED, + KANTO_DEX_RADIACHAN, + KANTO_DEX_LICKITUNG, + KANTO_DEX_LICKILICKY, + KANTO_DEX_LICKILOLLY, + KANTO_DEX_LICKILATO, + KANTO_DEX_KOFFING, + KANTO_DEX_WEEZING, + KANTO_DEX_HEEVING, + KANTO_DEX_CHOHKING, + KANTO_DEX_RHYHORN, + KANTO_DEX_RHYDON, + KANTO_DEX_RHYPERIOR, + KANTO_DEX_RHYMARKABL, + KANTO_DEX_RHYLIC, + KANTO_DEX_RHYBORN, + KANTO_DEX_CHANSEY, + KANTO_DEX_BLISSEY, + KANTO_DEX_GOGETTEY, + KANTO_DEX_LUKKEY, + KANTO_DEX_FORTUNITEY, + KANTO_DEX_TANGELA, + KANTO_DEX_TANGROWTH, + KANTO_DEX_TANGATHER, + KANTO_DEX_TANGOLIATH, + KANTO_DEX_TANGRAPPLE, + KANTO_DEX_KANGAKID, + KANTO_DEX_KANGASKHAN, + KANTO_DEX_KANGALLOUS, + KANTO_DEX_KANGARUTAL, + KANTO_DEX_HORSEA, + KANTO_DEX_SEADRA, + KANTO_DEX_KINGDRA, + KANTO_DEX_LORDRA, + KANTO_DEX_PINNADRA, + KANTO_DEX_GOLDEEN, + KANTO_DEX_SEAKING, + KANTO_DEX_SEAREX, + KANTO_DEX_CAPRISEA, + KANTO_DEX_STARYU, + KANTO_DEX_STARMIE, + KANTO_DEX_STARUS, + KANTO_DEX_STARWE, + KANTO_DEX_MR_MIME, + KANTO_DEX_MR_JEST, + KANTO_DEX_MR_FOOL, + KANTO_DEX_SCYTHER, + KANTO_DEX_SCIZOR, + KANTO_DEX_RAZER, + KANTO_DEX_CLAYMOR, + KANTO_DEX_JYNX, + KANTO_DEX_JYNKIES, + KANTO_DEX_JEEPERS, + KANTO_DEX_ELECTABUZZ, + KANTO_DEX_ELECTIVIRE, + KANTO_DEX_ELECTIVINE, + KANTO_DEX_ELECTIWIZZ, + KANTO_DEX_MAGMAR, + KANTO_DEX_MAGMORTAR, + KANTO_DEX_MAGMORE, + KANTO_DEX_MAGMOLTEN, + KANTO_DEX_PINSIR, + KANTO_DEX_PINSIRIOR, + KANTO_DEX_ABYSSIR, + KANTO_DEX_TAUROS, + KANTO_DEX_TAUROX, + KANTO_DEX_OXENFREE, + KANTO_DEX_MAGIKARP, + KANTO_DEX_GYARADOS, + KANTO_DEX_HYDRADOS, + KANTO_DEX_DRACOSMIC, + KANTO_DEX_QUAZAR, + KANTO_DEX_LAPRAS, + KANTO_DEX_LOCHLASS, + KANTO_DEX_NESSEA, + KANTO_DEX_DITTO, + KANTO_DEX_MORPHO, + KANTO_DEX_METAMORPHO, + KANTO_DEX_EEVEE, + KANTO_DEX_VAPOREON, + KANTO_DEX_RIVEON, + KANTO_DEX_BRINEON, + KANTO_DEX_JOLTEON, + KANTO_DEX_PLASMEON, + KANTO_DEX_GALVEON, + KANTO_DEX_FLAREON, + KANTO_DEX_SMOLDEON, + KANTO_DEX_INFERNEON, + KANTO_DEX_PORYGON, + KANTO_DEX_PORYGON2, + KANTO_DEX_PORYGONZ, + KANTO_DEX_PORYGONX, + KANTO_DEX_PORYGONQ, + KANTO_DEX_PORYGON2A4, + KANTO_DEX_OMANYTE, + KANTO_DEX_OMASTAR, + KANTO_DEX_OMAPAL, + KANTO_DEX_OMAGUS, + KANTO_DEX_KABUTO, + KANTO_DEX_KABUTOPS, + KANTO_DEX_KABUTAK, + KANTO_DEX_KABUSTION, + KANTO_DEX_AERODACTYL, + KANTO_DEX_MANDILUFT, + KANTO_DEX_AMBALITHIC, + KANTO_DEX_SNORLAX, + KANTO_DEX_ACTLAX, + KANTO_DEX_GRIZZLAX, + KANTO_DEX_ARTICUNO, + KANTO_DEX_SNOWONE, + KANTO_DEX_FROSTUNUS, + KANTO_DEX_ZAPDOS, + KANTO_DEX_SHOCKATOO, + KANTO_DEX_VOLTDUO, + KANTO_DEX_MOLTRES, + KANTO_DEX_IGNITHREE, + KANTO_DEX_INFERNTRI, + KANTO_DEX_DRATINI, + KANTO_DEX_DRAGONAIR, + KANTO_DEX_DRAGONITE, + KANTO_DEX_DRAGONIER, + KANTO_DEX_DRAGONACE, + KANTO_DEX_DRAGONTALE, + KANTO_DEX_MEWTWO, + KANTO_DEX_MEWTHREE, + KANTO_DEX_MEWFOUR, + KANTO_DEX_MEW, + KANTO_DEX_NYU, + KANTO_DEX_IOTA, + KANTO_DEX_MISSINGNO1, + KANTO_DEX_MISSINGNO2, + KANTO_DEX_MISSINGNO3, + KANTO_DEX_MISSINGNO4, + KANTO_DEX_MISSINGNO5, +}; + +#define KANTO_DEX_COUNT (KANTO_DEX_MISSINGNO5 + 1) +#define HOENN_DEX_COUNT 1 + +#define REGIONAL_DEX_COUNT (IS_FRLG ? KANTO_DEX_COUNT : HOENN_DEX_COUNT) + +#define DECAGRAMS_IN_POUND 4536 +#define CM_PER_INCH 2.54 +#define CM_PER_INCH_FACTOR (CM_PER_INCH * 100) +#define INCHES_IN_FOOT 12 +#define INCHES_IN_ONE_AND_HALF_FOOT (INCHES_IN_FOOT * 1.5) +#define INCHES_IN_FOOT_FACTOR (INCHES_IN_FOOT * 10) + +#define WEIGHT_HEIGHT_STR_LEN 16 +#define WEIGHT_HEIGHT_STR_MEM (WEIGHT_HEIGHT_STR_LEN * sizeof(u8)) + +#define DEX_HEADER_X 96 +#define DEX_Y_TOP 57 +#define DEX_Y_BOTTOM 73 +#define DEX_MEASUREMENT_X 129 + +#define DEX_HGSS_HEADER_X_PADDING 59 +#define DEX_HGSS_Y_TOP_PADDING 7 +#define DEX_HGSS_Y_BOTTOM_PADDING 4 +#define DEX_HGSS_MEASUREMENT_X_PADDING 51 + +enum +{ + DEX_MODE_HOENN, + DEX_MODE_NATIONAL +}; + +enum +{ + FLAG_GET_SEEN, + FLAG_GET_CAUGHT, + FLAG_SET_SEEN, + FLAG_SET_CAUGHT +}; + +#endif//end of program \ No newline at end of file diff --git a/pokeemerald-tools/pokemon.h b/pokeemerald-tools/pokemon.h new file mode 100644 index 0000000000..73dcdd3256 --- /dev/null +++ b/pokeemerald-tools/pokemon.h @@ -0,0 +1,1143 @@ + const u32 gMonFrontPic_Ecosaur[] = INCBIN_U32("graphics/pokemon/ecosaur/front.4bpp.smol"); + const u32 gMonBackPic_Ecosaur[] = INCBIN_U32("graphics/pokemon/ecosaur/back.4bpp.smol"); + const u16 gMonPalette_Ecosaur[] = INCBIN_U16("graphics/pokemon/ecosaur/front.gbapal"); + const u16 gMonShinyPalette_Ecosaur[] = INCBIN_U16("graphics/pokemon/ecosaur/back.gbapal"); + const u8 gMonIcon_Ecosaur[] = INCBIN_U8("graphics/pokemon/ecosaur/icon.4bpp"); + + const u32 gMonFrontPic_Terarisaur[] = INCBIN_U32("graphics/pokemon/terarisaur/front.4bpp.smol"); + const u32 gMonBackPic_Terarisaur[] = INCBIN_U32("graphics/pokemon/terarisaur/back.4bpp.smol"); + const u16 gMonPalette_Terarisaur[] = INCBIN_U16("graphics/pokemon/terarisaur/front.gbapal"); + const u16 gMonShinyPalette_Terarisaur[] = INCBIN_U16("graphics/pokemon/terarisaur/back.gbapal"); + const u8 gMonIcon_Terarisaur[] = INCBIN_U8("graphics/pokemon/terarisaur/icon.4bpp"); + + const u32 gMonFrontPic_Symbisaur[] = INCBIN_U32("graphics/pokemon/symbisaur/front.4bpp.smol"); + const u32 gMonBackPic_Symbisaur[] = INCBIN_U32("graphics/pokemon/symbisaur/back.4bpp.smol"); + const u16 gMonPalette_Symbisaur[] = INCBIN_U16("graphics/pokemon/symbisaur/front.gbapal"); + const u16 gMonShinyPalette_Symbisaur[] = INCBIN_U16("graphics/pokemon/symbisaur/back.gbapal"); + const u8 gMonIcon_Symbisaur[] = INCBIN_U8("graphics/pokemon/symbisaur/icon.4bpp"); + + const u32 gMonFrontPic_Chariguana[] = INCBIN_U32("graphics/pokemon/chariguana/front.4bpp.smol"); + const u32 gMonBackPic_Chariguana[] = INCBIN_U32("graphics/pokemon/chariguana/back.4bpp.smol"); + const u16 gMonPalette_Chariguana[] = INCBIN_U16("graphics/pokemon/chariguana/front.gbapal"); + const u16 gMonShinyPalette_Chariguana[] = INCBIN_U16("graphics/pokemon/chariguana/back.gbapal"); + const u8 gMonIcon_Chariguana[] = INCBIN_U8("graphics/pokemon/chariguana/icon.4bpp"); + + const u32 gMonFrontPic_Chariana[] = INCBIN_U32("graphics/pokemon/chariana/front.4bpp.smol"); + const u32 gMonBackPic_Chariana[] = INCBIN_U32("graphics/pokemon/chariana/back.4bpp.smol"); + const u16 gMonPalette_Chariana[] = INCBIN_U16("graphics/pokemon/chariana/front.gbapal"); + const u16 gMonShinyPalette_Chariana[] = INCBIN_U16("graphics/pokemon/chariana/back.gbapal"); + const u8 gMonIcon_Chariana[] = INCBIN_U8("graphics/pokemon/chariana/icon.4bpp"); + + const u32 gMonFrontPic_Chariathan[] = INCBIN_U32("graphics/pokemon/chariathan/front.4bpp.smol"); + const u32 gMonBackPic_Chariathan[] = INCBIN_U32("graphics/pokemon/chariathan/back.4bpp.smol"); + const u16 gMonPalette_Chariathan[] = INCBIN_U16("graphics/pokemon/chariathan/front.gbapal"); + const u16 gMonShinyPalette_Chariathan[] = INCBIN_U16("graphics/pokemon/chariathan/back.gbapal"); + const u8 gMonIcon_Chariathan[] = INCBIN_U8("graphics/pokemon/chariathan/icon.4bpp"); + + const u32 gMonFrontPic_Ferrapin[] = INCBIN_U32("graphics/pokemon/ferrapin/front.4bpp.smol"); + const u32 gMonBackPic_Ferrapin[] = INCBIN_U32("graphics/pokemon/ferrapin/back.4bpp.smol"); + const u16 gMonPalette_Ferrapin[] = INCBIN_U16("graphics/pokemon/ferrapin/front.gbapal"); + const u16 gMonShinyPalette_Ferrapin[] = INCBIN_U16("graphics/pokemon/ferrapin/back.gbapal"); + const u8 gMonIcon_Ferrapin[] = INCBIN_U8("graphics/pokemon/ferrapin/icon.4bpp"); + + const u32 gMonFrontPic_Fortoise[] = INCBIN_U32("graphics/pokemon/fortoise/front.4bpp.smol"); + const u32 gMonBackPic_Fortoise[] = INCBIN_U32("graphics/pokemon/fortoise/back.4bpp.smol"); + const u16 gMonPalette_Fortoise[] = INCBIN_U16("graphics/pokemon/fortoise/front.gbapal"); + const u16 gMonShinyPalette_Fortoise[] = INCBIN_U16("graphics/pokemon/fortoise/back.gbapal"); + const u8 gMonIcon_Fortoise[] = INCBIN_U8("graphics/pokemon/fortoise/icon.4bpp"); + + const u32 gMonFrontPic_Turtillery[] = INCBIN_U32("graphics/pokemon/turtillery/front.4bpp.smol"); + const u32 gMonBackPic_Turtillery[] = INCBIN_U32("graphics/pokemon/turtillery/back.4bpp.smol"); + const u16 gMonPalette_Turtillery[] = INCBIN_U16("graphics/pokemon/turtillery/front.gbapal"); + const u16 gMonShinyPalette_Turtillery[] = INCBIN_U16("graphics/pokemon/turtillery/back.gbapal"); + const u8 gMonIcon_Turtillery[] = INCBIN_U8("graphics/pokemon/turtillery/icon.4bpp"); + + const u32 gMonFrontPic_Butteflare[] = INCBIN_U32("graphics/pokemon/butteflare/front.4bpp.smol"); + const u32 gMonBackPic_Butteflare[] = INCBIN_U32("graphics/pokemon/butteflare/back.4bpp.smol"); + const u16 gMonPalette_Butteflare[] = INCBIN_U16("graphics/pokemon/butteflare/front.gbapal"); + const u16 gMonShinyPalette_Butteflare[] = INCBIN_U16("graphics/pokemon/butteflare/back.gbapal"); + const u8 gMonIcon_Butteflare[] = INCBIN_U8("graphics/pokemon/butteflare/icon.4bpp"); + + const u32 gMonFrontPic_Pyrefree[] = INCBIN_U32("graphics/pokemon/pyrefree/front.4bpp.smol"); + const u32 gMonBackPic_Pyrefree[] = INCBIN_U32("graphics/pokemon/pyrefree/back.4bpp.smol"); + const u16 gMonPalette_Pyrefree[] = INCBIN_U16("graphics/pokemon/pyrefree/front.gbapal"); + const u16 gMonShinyPalette_Pyrefree[] = INCBIN_U16("graphics/pokemon/pyrefree/back.gbapal"); + const u8 gMonIcon_Pyrefree[] = INCBIN_U8("graphics/pokemon/pyrefree/icon.4bpp"); + + const u32 gMonFrontPic_Impsect[] = INCBIN_U32("graphics/pokemon/impsect/front.4bpp.smol"); + const u32 gMonBackPic_Impsect[] = INCBIN_U32("graphics/pokemon/impsect/back.4bpp.smol"); + const u16 gMonPalette_Impsect[] = INCBIN_U16("graphics/pokemon/impsect/front.gbapal"); + const u16 gMonShinyPalette_Impsect[] = INCBIN_U16("graphics/pokemon/impsect/back.gbapal"); + const u8 gMonIcon_Impsect[] = INCBIN_U8("graphics/pokemon/impsect/icon.4bpp"); + + const u32 gMonFrontPic_Beebrute[] = INCBIN_U32("graphics/pokemon/beebrute/front.4bpp.smol"); + const u32 gMonBackPic_Beebrute[] = INCBIN_U32("graphics/pokemon/beebrute/back.4bpp.smol"); + const u16 gMonPalette_Beebrute[] = INCBIN_U16("graphics/pokemon/beebrute/front.gbapal"); + const u16 gMonShinyPalette_Beebrute[] = INCBIN_U16("graphics/pokemon/beebrute/back.gbapal"); + const u8 gMonIcon_Beebrute[] = INCBIN_U8("graphics/pokemon/beebrute/icon.4bpp"); + + const u32 gMonFrontPic_Dronarch[] = INCBIN_U32("graphics/pokemon/dronarch/front.4bpp.smol"); + const u32 gMonBackPic_Dronarch[] = INCBIN_U32("graphics/pokemon/dronarch/back.4bpp.smol"); + const u16 gMonPalette_Dronarch[] = INCBIN_U16("graphics/pokemon/dronarch/front.gbapal"); + const u16 gMonShinyPalette_Dronarch[] = INCBIN_U16("graphics/pokemon/dronarch/back.gbapal"); + const u8 gMonIcon_Dronarch[] = INCBIN_U8("graphics/pokemon/dronarch/icon.4bpp"); + + const u32 gMonFrontPic_Sepistrike[] = INCBIN_U32("graphics/pokemon/sepistrike/front.4bpp.smol"); + const u32 gMonBackPic_Sepistrike[] = INCBIN_U32("graphics/pokemon/sepistrike/back.4bpp.smol"); + const u16 gMonPalette_Sepistrike[] = INCBIN_U16("graphics/pokemon/sepistrike/front.gbapal"); + const u16 gMonShinyPalette_Sepistrike[] = INCBIN_U16("graphics/pokemon/sepistrike/back.gbapal"); + const u8 gMonIcon_Sepistrike[] = INCBIN_U8("graphics/pokemon/sepistrike/icon.4bpp"); + + const u32 gMonFrontPic_Pidgaero[] = INCBIN_U32("graphics/pokemon/pidgaero/front.4bpp.smol"); + const u32 gMonBackPic_Pidgaero[] = INCBIN_U32("graphics/pokemon/pidgaero/back.4bpp.smol"); + const u16 gMonPalette_Pidgaero[] = INCBIN_U16("graphics/pokemon/pidgaero/front.gbapal"); + const u16 gMonShinyPalette_Pidgaero[] = INCBIN_U16("graphics/pokemon/pidgaero/back.gbapal"); + const u8 gMonIcon_Pidgaero[] = INCBIN_U8("graphics/pokemon/pidgaero/icon.4bpp"); + + const u32 gMonFrontPic_Pidgeozone[] = INCBIN_U32("graphics/pokemon/pidgeozone/front.4bpp.smol"); + const u32 gMonBackPic_Pidgeozone[] = INCBIN_U32("graphics/pokemon/pidgeozone/back.4bpp.smol"); + const u16 gMonPalette_Pidgeozone[] = INCBIN_U16("graphics/pokemon/pidgeozone/front.gbapal"); + const u16 gMonShinyPalette_Pidgeozone[] = INCBIN_U16("graphics/pokemon/pidgeozone/back.gbapal"); + const u8 gMonIcon_Pidgeozone[] = INCBIN_U8("graphics/pokemon/pidgeozone/icon.4bpp"); + + const u32 gMonFrontPic_Pidgephyr[] = INCBIN_U32("graphics/pokemon/pidgephyr/front.4bpp.smol"); + const u32 gMonBackPic_Pidgephyr[] = INCBIN_U32("graphics/pokemon/pidgephyr/back.4bpp.smol"); + const u16 gMonPalette_Pidgephyr[] = INCBIN_U16("graphics/pokemon/pidgephyr/front.gbapal"); + const u16 gMonShinyPalette_Pidgephyr[] = INCBIN_U16("graphics/pokemon/pidgephyr/back.gbapal"); + const u8 gMonIcon_Pidgephyr[] = INCBIN_U8("graphics/pokemon/pidgephyr/icon.4bpp"); + + const u32 gMonFrontPic_Rattchet[] = INCBIN_U32("graphics/pokemon/rattchet/front.4bpp.smol"); + const u32 gMonBackPic_Rattchet[] = INCBIN_U32("graphics/pokemon/rattchet/back.4bpp.smol"); + const u16 gMonPalette_Rattchet[] = INCBIN_U16("graphics/pokemon/rattchet/front.gbapal"); + const u16 gMonShinyPalette_Rattchet[] = INCBIN_U16("graphics/pokemon/rattchet/back.gbapal"); + const u8 gMonIcon_Rattchet[] = INCBIN_U8("graphics/pokemon/rattchet/icon.4bpp"); + + const u32 gMonFrontPic_Rattarule[] = INCBIN_U32("graphics/pokemon/rattarule/front.4bpp.smol"); + const u32 gMonBackPic_Rattarule[] = INCBIN_U32("graphics/pokemon/rattarule/back.4bpp.smol"); + const u16 gMonPalette_Rattarule[] = INCBIN_U16("graphics/pokemon/rattarule/front.gbapal"); + const u16 gMonShinyPalette_Rattarule[] = INCBIN_U16("graphics/pokemon/rattarule/back.gbapal"); + const u8 gMonIcon_Rattarule[] = INCBIN_U8("graphics/pokemon/rattarule/icon.4bpp"); + + const u32 gMonFrontPic_Sneerow[] = INCBIN_U32("graphics/pokemon/sneerow/front.4bpp.smol"); + const u32 gMonBackPic_Sneerow[] = INCBIN_U32("graphics/pokemon/sneerow/back.4bpp.smol"); + const u16 gMonPalette_Sneerow[] = INCBIN_U16("graphics/pokemon/sneerow/front.gbapal"); + const u16 gMonShinyPalette_Sneerow[] = INCBIN_U16("graphics/pokemon/sneerow/back.gbapal"); + const u8 gMonIcon_Sneerow[] = INCBIN_U8("graphics/pokemon/sneerow/icon.4bpp"); + + const u32 gMonFrontPic_Ornithow[] = INCBIN_U32("graphics/pokemon/ornithow/front.4bpp.smol"); + const u32 gMonBackPic_Ornithow[] = INCBIN_U32("graphics/pokemon/ornithow/back.4bpp.smol"); + const u16 gMonPalette_Ornithow[] = INCBIN_U16("graphics/pokemon/ornithow/front.gbapal"); + const u16 gMonShinyPalette_Ornithow[] = INCBIN_U16("graphics/pokemon/ornithow/back.gbapal"); + const u8 gMonIcon_Ornithow[] = INCBIN_U8("graphics/pokemon/ornithow/icon.4bpp"); + + const u32 gMonFrontPic_Nohtyp[] = INCBIN_U32("graphics/pokemon/nohtyp/front.4bpp.smol"); + const u32 gMonBackPic_Nohtyp[] = INCBIN_U32("graphics/pokemon/nohtyp/back.4bpp.smol"); + const u16 gMonPalette_Nohtyp[] = INCBIN_U16("graphics/pokemon/nohtyp/front.gbapal"); + const u16 gMonShinyPalette_Nohtyp[] = INCBIN_U16("graphics/pokemon/nohtyp/back.gbapal"); + const u8 gMonIcon_Nohtyp[] = INCBIN_U8("graphics/pokemon/nohtyp/icon.4bpp"); + + const u32 gMonFrontPic_Adnokana[] = INCBIN_U32("graphics/pokemon/adnokana/front.4bpp.smol"); + const u32 gMonBackPic_Adnokana[] = INCBIN_U32("graphics/pokemon/adnokana/back.4bpp.smol"); + const u16 gMonPalette_Adnokana[] = INCBIN_U16("graphics/pokemon/adnokana/front.gbapal"); + const u16 gMonShinyPalette_Adnokana[] = INCBIN_U16("graphics/pokemon/adnokana/back.gbapal"); + const u8 gMonIcon_Adnokana[] = INCBIN_U8("graphics/pokemon/adnokana/icon.4bpp"); + + const u32 gMonFrontPic_Gorochu[] = INCBIN_U32("graphics/pokemon/gorochu/front.4bpp.smol"); + const u32 gMonBackPic_Gorochu[] = INCBIN_U32("graphics/pokemon/gorochu/back.4bpp.smol"); + const u16 gMonPalette_Gorochu[] = INCBIN_U16("graphics/pokemon/gorochu/front.gbapal"); + const u16 gMonShinyPalette_Gorochu[] = INCBIN_U16("graphics/pokemon/gorochu/back.gbapal"); + const u8 gMonIcon_Gorochu[] = INCBIN_U8("graphics/pokemon/gorochu/icon.4bpp"); + + const u32 gMonFrontPic_Stromachu[] = INCBIN_U32("graphics/pokemon/stromachu/front.4bpp.smol"); + const u32 gMonBackPic_Stromachu[] = INCBIN_U32("graphics/pokemon/stromachu/back.4bpp.smol"); + const u16 gMonPalette_Stromachu[] = INCBIN_U16("graphics/pokemon/stromachu/front.gbapal"); + const u16 gMonShinyPalette_Stromachu[] = INCBIN_U16("graphics/pokemon/stromachu/back.gbapal"); + const u8 gMonIcon_Stromachu[] = INCBIN_U8("graphics/pokemon/stromachu/icon.4bpp"); + + const u32 gMonFrontPic_Sandslam[] = INCBIN_U32("graphics/pokemon/sandslam/front.4bpp.smol"); + const u32 gMonBackPic_Sandslam[] = INCBIN_U32("graphics/pokemon/sandslam/back.4bpp.smol"); + const u16 gMonPalette_Sandslam[] = INCBIN_U16("graphics/pokemon/sandslam/front.gbapal"); + const u16 gMonShinyPalette_Sandslam[] = INCBIN_U16("graphics/pokemon/sandslam/back.gbapal"); + const u8 gMonIcon_Sandslam[] = INCBIN_U8("graphics/pokemon/sandslam/icon.4bpp"); + + const u32 gMonFrontPic_Ferodillo[] = INCBIN_U32("graphics/pokemon/ferodillo/front.4bpp.smol"); + const u32 gMonBackPic_Ferodillo[] = INCBIN_U32("graphics/pokemon/ferodillo/back.4bpp.smol"); + const u16 gMonPalette_Ferodillo[] = INCBIN_U16("graphics/pokemon/ferodillo/front.gbapal"); + const u16 gMonShinyPalette_Ferodillo[] = INCBIN_U16("graphics/pokemon/ferodillo/back.gbapal"); + const u8 gMonIcon_Ferodillo[] = INCBIN_U8("graphics/pokemon/ferodillo/icon.4bpp"); + + const u32 gMonFrontPic_Nidoregal[] = INCBIN_U32("graphics/pokemon/nidoregal/front.4bpp.smol"); + const u32 gMonBackPic_Nidoregal[] = INCBIN_U32("graphics/pokemon/nidoregal/back.4bpp.smol"); + const u16 gMonPalette_Nidoregal[] = INCBIN_U16("graphics/pokemon/nidoregal/front.gbapal"); + const u16 gMonShinyPalette_Nidoregal[] = INCBIN_U16("graphics/pokemon/nidoregal/back.gbapal"); + const u8 gMonIcon_Nidoregal[] = INCBIN_U8("graphics/pokemon/nidoregal/icon.4bpp"); + + const u32 gMonFrontPic_Nidoarchy[] = INCBIN_U32("graphics/pokemon/nidoarchy/front.4bpp.smol"); + const u32 gMonBackPic_Nidoarchy[] = INCBIN_U32("graphics/pokemon/nidoarchy/back.4bpp.smol"); + const u16 gMonPalette_Nidoarchy[] = INCBIN_U16("graphics/pokemon/nidoarchy/front.gbapal"); + const u16 gMonShinyPalette_Nidoarchy[] = INCBIN_U16("graphics/pokemon/nidoarchy/back.gbapal"); + const u8 gMonIcon_Nidoarchy[] = INCBIN_U8("graphics/pokemon/nidoarchy/icon.4bpp"); + + const u32 gMonFrontPic_Nidoruly[] = INCBIN_U32("graphics/pokemon/nidoruly/front.4bpp.smol"); + const u32 gMonBackPic_Nidoruly[] = INCBIN_U32("graphics/pokemon/nidoruly/back.4bpp.smol"); + const u16 gMonPalette_Nidoruly[] = INCBIN_U16("graphics/pokemon/nidoruly/front.gbapal"); + const u16 gMonShinyPalette_Nidoruly[] = INCBIN_U16("graphics/pokemon/nidoruly/back.gbapal"); + const u8 gMonIcon_Nidoruly[] = INCBIN_U8("graphics/pokemon/nidoruly/icon.4bpp"); + + const u32 gMonFrontPic_Nidominate[] = INCBIN_U32("graphics/pokemon/nidominate/front.4bpp.smol"); + const u32 gMonBackPic_Nidominate[] = INCBIN_U32("graphics/pokemon/nidominate/back.4bpp.smol"); + const u16 gMonPalette_Nidominate[] = INCBIN_U16("graphics/pokemon/nidominate/front.gbapal"); + const u16 gMonShinyPalette_Nidominate[] = INCBIN_U16("graphics/pokemon/nidominate/back.gbapal"); + const u8 gMonIcon_Nidominate[] = INCBIN_U8("graphics/pokemon/nidominate/icon.4bpp"); + + const u32 gMonFrontPic_Clefaefae[] = INCBIN_U32("graphics/pokemon/clefaefae/front.4bpp.smol"); + const u32 gMonBackPic_Clefaefae[] = INCBIN_U32("graphics/pokemon/clefaefae/back.4bpp.smol"); + const u16 gMonPalette_Clefaefae[] = INCBIN_U16("graphics/pokemon/clefaefae/front.gbapal"); + const u16 gMonShinyPalette_Clefaefae[] = INCBIN_U16("graphics/pokemon/clefaefae/back.gbapal"); + const u8 gMonIcon_Clefaefae[] = INCBIN_U8("graphics/pokemon/clefaefae/icon.4bpp"); + + const u32 gMonFrontPic_Clefanaut[] = INCBIN_U32("graphics/pokemon/clefanaut/front.4bpp.smol"); + const u32 gMonBackPic_Clefanaut[] = INCBIN_U32("graphics/pokemon/clefanaut/back.4bpp.smol"); + const u16 gMonPalette_Clefanaut[] = INCBIN_U16("graphics/pokemon/clefanaut/front.gbapal"); + const u16 gMonShinyPalette_Clefanaut[] = INCBIN_U16("graphics/pokemon/clefanaut/back.gbapal"); + const u8 gMonIcon_Clefanaut[] = INCBIN_U8("graphics/pokemon/clefanaut/icon.4bpp"); + + const u32 gMonFrontPic_Spiritales[] = INCBIN_U32("graphics/pokemon/spiritales/front.4bpp.smol"); + const u32 gMonBackPic_Spiritales[] = INCBIN_U32("graphics/pokemon/spiritales/back.4bpp.smol"); + const u16 gMonPalette_Spiritales[] = INCBIN_U16("graphics/pokemon/spiritales/front.gbapal"); + const u16 gMonShinyPalette_Spiritales[] = INCBIN_U16("graphics/pokemon/spiritales/back.gbapal"); + const u8 gMonIcon_Spiritales[] = INCBIN_U8("graphics/pokemon/spiritales/icon.4bpp"); + + const u32 gMonFrontPic_Yokayubi[] = INCBIN_U32("graphics/pokemon/yokayubi/front.4bpp.smol"); + const u32 gMonBackPic_Yokayubi[] = INCBIN_U32("graphics/pokemon/yokayubi/back.4bpp.smol"); + const u16 gMonPalette_Yokayubi[] = INCBIN_U16("graphics/pokemon/yokayubi/front.gbapal"); + const u16 gMonShinyPalette_Yokayubi[] = INCBIN_U16("graphics/pokemon/yokayubi/back.gbapal"); + const u8 gMonIcon_Yokayubi[] = INCBIN_U8("graphics/pokemon/yokayubi/icon.4bpp"); + + const u32 gMonFrontPic_Gigglyhuff[] = INCBIN_U32("graphics/pokemon/gigglyhuff/front.4bpp.smol"); + const u32 gMonBackPic_Gigglyhuff[] = INCBIN_U32("graphics/pokemon/gigglyhuff/back.4bpp.smol"); + const u16 gMonPalette_Gigglyhuff[] = INCBIN_U16("graphics/pokemon/gigglyhuff/front.gbapal"); + const u16 gMonShinyPalette_Gigglyhuff[] = INCBIN_U16("graphics/pokemon/gigglyhuff/back.gbapal"); + const u8 gMonIcon_Gigglyhuff[] = INCBIN_U8("graphics/pokemon/gigglyhuff/icon.4bpp"); + + const u32 gMonFrontPic_Bogglyfuff[] = INCBIN_U32("graphics/pokemon/bogglyfuff/front.4bpp.smol"); + const u32 gMonBackPic_Bogglyfuff[] = INCBIN_U32("graphics/pokemon/bogglyfuff/back.4bpp.smol"); + const u16 gMonPalette_Bogglyfuff[] = INCBIN_U16("graphics/pokemon/bogglyfuff/front.gbapal"); + const u16 gMonShinyPalette_Bogglyfuff[] = INCBIN_U16("graphics/pokemon/bogglyfuff/back.gbapal"); + const u8 gMonIcon_Bogglyfuff[] = INCBIN_U8("graphics/pokemon/bogglyfuff/icon.4bpp"); + + const u32 gMonFrontPic_Polabat[] = INCBIN_U32("graphics/pokemon/polabat/front.4bpp.smol"); + const u32 gMonBackPic_Polabat[] = INCBIN_U32("graphics/pokemon/polabat/back.4bpp.smol"); + const u16 gMonPalette_Polabat[] = INCBIN_U16("graphics/pokemon/polabat/front.gbapal"); + const u16 gMonShinyPalette_Polabat[] = INCBIN_U16("graphics/pokemon/polabat/back.gbapal"); + const u8 gMonIcon_Polabat[] = INCBIN_U8("graphics/pokemon/polabat/icon.4bpp"); + + const u32 gMonFrontPic_Visibat[] = INCBIN_U32("graphics/pokemon/visibat/front.4bpp.smol"); + const u32 gMonBackPic_Visibat[] = INCBIN_U32("graphics/pokemon/visibat/back.4bpp.smol"); + const u16 gMonPalette_Visibat[] = INCBIN_U16("graphics/pokemon/visibat/front.gbapal"); + const u16 gMonShinyPalette_Visibat[] = INCBIN_U16("graphics/pokemon/visibat/back.gbapal"); + const u8 gMonIcon_Visibat[] = INCBIN_U8("graphics/pokemon/visibat/icon.4bpp"); + + const u32 gMonFrontPic_Horribat[] = INCBIN_U32("graphics/pokemon/horribat/front.4bpp.smol"); + const u32 gMonBackPic_Horribat[] = INCBIN_U32("graphics/pokemon/horribat/back.4bpp.smol"); + const u16 gMonPalette_Horribat[] = INCBIN_U16("graphics/pokemon/horribat/front.gbapal"); + const u16 gMonShinyPalette_Horribat[] = INCBIN_U16("graphics/pokemon/horribat/back.gbapal"); + const u8 gMonIcon_Horribat[] = INCBIN_U8("graphics/pokemon/horribat/icon.4bpp"); + + const u32 gMonFrontPic_Rafflurk[] = INCBIN_U32("graphics/pokemon/rafflurk/front.4bpp.smol"); + const u32 gMonBackPic_Rafflurk[] = INCBIN_U32("graphics/pokemon/rafflurk/back.4bpp.smol"); + const u16 gMonPalette_Rafflurk[] = INCBIN_U16("graphics/pokemon/rafflurk/front.gbapal"); + const u16 gMonShinyPalette_Rafflurk[] = INCBIN_U16("graphics/pokemon/rafflurk/back.gbapal"); + const u8 gMonIcon_Rafflurk[] = INCBIN_U8("graphics/pokemon/rafflurk/icon.4bpp"); + + const u32 gMonFrontPic_Concorpsia[] = INCBIN_U32("graphics/pokemon/concorpsia/front.4bpp.smol"); + const u32 gMonBackPic_Concorpsia[] = INCBIN_U32("graphics/pokemon/concorpsia/back.4bpp.smol"); + const u16 gMonPalette_Concorpsia[] = INCBIN_U16("graphics/pokemon/concorpsia/front.gbapal"); + const u16 gMonShinyPalette_Concorpsia[] = INCBIN_U16("graphics/pokemon/concorpsia/back.gbapal"); + const u8 gMonIcon_Concorpsia[] = INCBIN_U8("graphics/pokemon/concorpsia/icon.4bpp"); + + const u32 gMonFrontPic_Sectasite[] = INCBIN_U32("graphics/pokemon/sectasite/front.4bpp.smol"); + const u32 gMonBackPic_Sectasite[] = INCBIN_U32("graphics/pokemon/sectasite/back.4bpp.smol"); + const u16 gMonPalette_Sectasite[] = INCBIN_U16("graphics/pokemon/sectasite/front.gbapal"); + const u16 gMonShinyPalette_Sectasite[] = INCBIN_U16("graphics/pokemon/sectasite/back.gbapal"); + const u8 gMonIcon_Sectasite[] = INCBIN_U8("graphics/pokemon/sectasite/icon.4bpp"); + + const u32 gMonFrontPic_Fungalith[] = INCBIN_U32("graphics/pokemon/fungalith/front.4bpp.smol"); + const u32 gMonBackPic_Fungalith[] = INCBIN_U32("graphics/pokemon/fungalith/back.4bpp.smol"); + const u16 gMonPalette_Fungalith[] = INCBIN_U16("graphics/pokemon/fungalith/front.gbapal"); + const u16 gMonShinyPalette_Fungalith[] = INCBIN_U16("graphics/pokemon/fungalith/back.gbapal"); + const u8 gMonIcon_Fungalith[] = INCBIN_U8("graphics/pokemon/fungalith/icon.4bpp"); + + const u32 gMonFrontPic_Venomena[] = INCBIN_U32("graphics/pokemon/venomena/front.4bpp.smol"); + const u32 gMonBackPic_Venomena[] = INCBIN_U32("graphics/pokemon/venomena/back.4bpp.smol"); + const u16 gMonPalette_Venomena[] = INCBIN_U16("graphics/pokemon/venomena/front.gbapal"); + const u16 gMonShinyPalette_Venomena[] = INCBIN_U16("graphics/pokemon/venomena/back.gbapal"); + const u8 gMonIcon_Venomena[] = INCBIN_U8("graphics/pokemon/venomena/icon.4bpp"); + + const u32 gMonFrontPic_Venomenon[] = INCBIN_U32("graphics/pokemon/venomenon/front.4bpp.smol"); + const u32 gMonBackPic_Venomenon[] = INCBIN_U32("graphics/pokemon/venomenon/back.4bpp.smol"); + const u16 gMonPalette_Venomenon[] = INCBIN_U16("graphics/pokemon/venomenon/front.gbapal"); + const u16 gMonShinyPalette_Venomenon[] = INCBIN_U16("graphics/pokemon/venomenon/back.gbapal"); + const u8 gMonIcon_Venomenon[] = INCBIN_U8("graphics/pokemon/venomenon/icon.4bpp"); + + const u32 gMonFrontPic_Dugrouple[] = INCBIN_U32("graphics/pokemon/dugrouple/front.4bpp.smol"); + const u32 gMonBackPic_Dugrouple[] = INCBIN_U32("graphics/pokemon/dugrouple/back.4bpp.smol"); + const u16 gMonPalette_Dugrouple[] = INCBIN_U16("graphics/pokemon/dugrouple/front.gbapal"); + const u16 gMonShinyPalette_Dugrouple[] = INCBIN_U16("graphics/pokemon/dugrouple/back.gbapal"); + const u8 gMonIcon_Dugrouple[] = INCBIN_U8("graphics/pokemon/dugrouple/icon.4bpp"); + + const u32 gMonFrontPic_Unearthlet[] = INCBIN_U32("graphics/pokemon/unearthlet/front.4bpp.smol"); + const u32 gMonBackPic_Unearthlet[] = INCBIN_U32("graphics/pokemon/unearthlet/back.4bpp.smol"); + const u16 gMonPalette_Unearthlet[] = INCBIN_U16("graphics/pokemon/unearthlet/front.gbapal"); + const u16 gMonShinyPalette_Unearthlet[] = INCBIN_U16("graphics/pokemon/unearthlet/back.gbapal"); + const u8 gMonIcon_Unearthlet[] = INCBIN_U8("graphics/pokemon/unearthlet/icon.4bpp"); + + const u32 gMonFrontPic_Diglenoid[] = INCBIN_U32("graphics/pokemon/diglenoid/front.4bpp.smol"); + const u32 gMonBackPic_Diglenoid[] = INCBIN_U32("graphics/pokemon/diglenoid/back.4bpp.smol"); + const u16 gMonPalette_Diglenoid[] = INCBIN_U16("graphics/pokemon/diglenoid/front.gbapal"); + const u16 gMonShinyPalette_Diglenoid[] = INCBIN_U16("graphics/pokemon/diglenoid/back.gbapal"); + const u8 gMonIcon_Diglenoid[] = INCBIN_U8("graphics/pokemon/diglenoid/icon.4bpp"); + + const u32 gMonFrontPic_Felankh[] = INCBIN_U32("graphics/pokemon/felankh/front.4bpp.smol"); + const u32 gMonBackPic_Felankh[] = INCBIN_U32("graphics/pokemon/felankh/back.4bpp.smol"); + const u16 gMonPalette_Felankh[] = INCBIN_U16("graphics/pokemon/felankh/front.gbapal"); + const u16 gMonShinyPalette_Felankh[] = INCBIN_U16("graphics/pokemon/felankh/back.gbapal"); + const u8 gMonIcon_Felankh[] = INCBIN_U8("graphics/pokemon/felankh/icon.4bpp"); + + const u32 gMonFrontPic_Patraphinx[] = INCBIN_U32("graphics/pokemon/patraphinx/front.4bpp.smol"); + const u32 gMonBackPic_Patraphinx[] = INCBIN_U32("graphics/pokemon/patraphinx/back.4bpp.smol"); + const u16 gMonPalette_Patraphinx[] = INCBIN_U16("graphics/pokemon/patraphinx/front.gbapal"); + const u16 gMonShinyPalette_Patraphinx[] = INCBIN_U16("graphics/pokemon/patraphinx/back.gbapal"); + const u8 gMonIcon_Patraphinx[] = INCBIN_U8("graphics/pokemon/patraphinx/icon.4bpp"); + + const u32 gMonFrontPic_Gilduck[] = INCBIN_U32("graphics/pokemon/gilduck/front.4bpp.smol"); + const u32 gMonBackPic_Gilduck[] = INCBIN_U32("graphics/pokemon/gilduck/back.4bpp.smol"); + const u16 gMonPalette_Gilduck[] = INCBIN_U16("graphics/pokemon/gilduck/front.gbapal"); + const u16 gMonShinyPalette_Gilduck[] = INCBIN_U16("graphics/pokemon/gilduck/back.gbapal"); + const u8 gMonIcon_Gilduck[] = INCBIN_U8("graphics/pokemon/gilduck/icon.4bpp"); + + const u32 gMonFrontPic_Platinupus[] = INCBIN_U32("graphics/pokemon/platinupus/front.4bpp.smol"); + const u32 gMonBackPic_Platinupus[] = INCBIN_U32("graphics/pokemon/platinupus/back.4bpp.smol"); + const u16 gMonPalette_Platinupus[] = INCBIN_U16("graphics/pokemon/platinupus/front.gbapal"); + const u16 gMonShinyPalette_Platinupus[] = INCBIN_U16("graphics/pokemon/platinupus/back.gbapal"); + const u8 gMonIcon_Platinupus[] = INCBIN_U8("graphics/pokemon/platinupus/icon.4bpp"); + + const u32 gMonFrontPic_Gorillash[] = INCBIN_U32("graphics/pokemon/gorillash/front.4bpp.smol"); + const u32 gMonBackPic_Gorillash[] = INCBIN_U32("graphics/pokemon/gorillash/back.4bpp.smol"); + const u16 gMonPalette_Gorillash[] = INCBIN_U16("graphics/pokemon/gorillash/front.gbapal"); + const u16 gMonShinyPalette_Gorillash[] = INCBIN_U16("graphics/pokemon/gorillash/back.gbapal"); + const u8 gMonIcon_Gorillash[] = INCBIN_U8("graphics/pokemon/gorillash/icon.4bpp"); + + const u32 gMonFrontPic_Bonumbell[] = INCBIN_U32("graphics/pokemon/bonumbell/front.4bpp.smol"); + const u32 gMonBackPic_Bonumbell[] = INCBIN_U32("graphics/pokemon/bonumbell/back.4bpp.smol"); + const u16 gMonPalette_Bonumbell[] = INCBIN_U16("graphics/pokemon/bonumbell/front.gbapal"); + const u16 gMonShinyPalette_Bonumbell[] = INCBIN_U16("graphics/pokemon/bonumbell/back.gbapal"); + const u8 gMonIcon_Bonumbell[] = INCBIN_U8("graphics/pokemon/bonumbell/icon.4bpp"); + + const u32 gMonFrontPic_Singesha[] = INCBIN_U32("graphics/pokemon/singesha/front.4bpp.smol"); + const u32 gMonBackPic_Singesha[] = INCBIN_U32("graphics/pokemon/singesha/back.4bpp.smol"); + const u16 gMonPalette_Singesha[] = INCBIN_U16("graphics/pokemon/singesha/front.gbapal"); + const u16 gMonShinyPalette_Singesha[] = INCBIN_U16("graphics/pokemon/singesha/back.gbapal"); + const u8 gMonIcon_Singesha[] = INCBIN_U8("graphics/pokemon/singesha/icon.4bpp"); + + const u32 gMonFrontPic_Guardiance[] = INCBIN_U32("graphics/pokemon/guardiance/front.4bpp.smol"); + const u32 gMonBackPic_Guardiance[] = INCBIN_U32("graphics/pokemon/guardiance/back.4bpp.smol"); + const u16 gMonPalette_Guardiance[] = INCBIN_U16("graphics/pokemon/guardiance/front.gbapal"); + const u16 gMonShinyPalette_Guardiance[] = INCBIN_U16("graphics/pokemon/guardiance/back.gbapal"); + const u8 gMonIcon_Guardiance[] = INCBIN_U8("graphics/pokemon/guardiance/icon.4bpp"); + + const u32 gMonFrontPic_Politoes[] = INCBIN_U32("graphics/pokemon/politoes/front.4bpp.smol"); + const u32 gMonBackPic_Politoes[] = INCBIN_U32("graphics/pokemon/politoes/back.4bpp.smol"); + const u16 gMonPalette_Politoes[] = INCBIN_U16("graphics/pokemon/politoes/front.gbapal"); + const u16 gMonShinyPalette_Politoes[] = INCBIN_U16("graphics/pokemon/politoes/back.gbapal"); + const u8 gMonIcon_Politoes[] = INCBIN_U8("graphics/pokemon/politoes/icon.4bpp"); + + const u32 gMonFrontPic_Poliwise[] = INCBIN_U32("graphics/pokemon/poliwise/front.4bpp.smol"); + const u32 gMonBackPic_Poliwise[] = INCBIN_U32("graphics/pokemon/poliwise/back.4bpp.smol"); + const u16 gMonPalette_Poliwise[] = INCBIN_U16("graphics/pokemon/poliwise/front.gbapal"); + const u16 gMonShinyPalette_Poliwise[] = INCBIN_U16("graphics/pokemon/poliwise/back.gbapal"); + const u8 gMonIcon_Poliwise[] = INCBIN_U8("graphics/pokemon/poliwise/icon.4bpp"); + + const u32 gMonFrontPic_Poliath[] = INCBIN_U32("graphics/pokemon/poliath/front.4bpp.smol"); + const u32 gMonBackPic_Poliath[] = INCBIN_U32("graphics/pokemon/poliath/back.4bpp.smol"); + const u16 gMonPalette_Poliath[] = INCBIN_U16("graphics/pokemon/poliath/front.gbapal"); + const u16 gMonShinyPalette_Poliath[] = INCBIN_U16("graphics/pokemon/poliath/back.gbapal"); + const u8 gMonIcon_Poliath[] = INCBIN_U8("graphics/pokemon/poliath/icon.4bpp"); + + const u32 gMonFrontPic_Simsalabim[] = INCBIN_U32("graphics/pokemon/simsalabim/front.4bpp.smol"); + const u32 gMonBackPic_Simsalabim[] = INCBIN_U32("graphics/pokemon/simsalabim/back.4bpp.smol"); + const u16 gMonPalette_Simsalabim[] = INCBIN_U16("graphics/pokemon/simsalabim/front.gbapal"); + const u16 gMonShinyPalette_Simsalabim[] = INCBIN_U16("graphics/pokemon/simsalabim/back.gbapal"); + const u8 gMonIcon_Simsalabim[] = INCBIN_U8("graphics/pokemon/simsalabim/icon.4bpp"); + + const u32 gMonFrontPic_Vohoodu[] = INCBIN_U32("graphics/pokemon/vohoodu/front.4bpp.smol"); + const u32 gMonBackPic_Vohoodu[] = INCBIN_U32("graphics/pokemon/vohoodu/back.4bpp.smol"); + const u16 gMonPalette_Vohoodu[] = INCBIN_U16("graphics/pokemon/vohoodu/front.gbapal"); + const u16 gMonShinyPalette_Vohoodu[] = INCBIN_U16("graphics/pokemon/vohoodu/back.gbapal"); + const u8 gMonIcon_Vohoodu[] = INCBIN_U8("graphics/pokemon/vohoodu/icon.4bpp"); + + const u32 gMonFrontPic_Tzarkartz[] = INCBIN_U32("graphics/pokemon/tzarkartz/front.4bpp.smol"); + const u32 gMonBackPic_Tzarkartz[] = INCBIN_U32("graphics/pokemon/tzarkartz/back.4bpp.smol"); + const u16 gMonPalette_Tzarkartz[] = INCBIN_U16("graphics/pokemon/tzarkartz/front.gbapal"); + const u16 gMonShinyPalette_Tzarkartz[] = INCBIN_U16("graphics/pokemon/tzarkartz/back.gbapal"); + const u8 gMonIcon_Tzarkartz[] = INCBIN_U8("graphics/pokemon/tzarkartz/icon.4bpp"); + + const u32 gMonFrontPic_Machulk[] = INCBIN_U32("graphics/pokemon/machulk/front.4bpp.smol"); + const u32 gMonBackPic_Machulk[] = INCBIN_U32("graphics/pokemon/machulk/back.4bpp.smol"); + const u16 gMonPalette_Machulk[] = INCBIN_U16("graphics/pokemon/machulk/front.gbapal"); + const u16 gMonShinyPalette_Machulk[] = INCBIN_U16("graphics/pokemon/machulk/back.gbapal"); + const u8 gMonIcon_Machulk[] = INCBIN_U8("graphics/pokemon/machulk/icon.4bpp"); + + const u32 gMonFrontPic_Abomachulk[] = INCBIN_U32("graphics/pokemon/abomachulk/front.4bpp.smol"); + const u32 gMonBackPic_Abomachulk[] = INCBIN_U32("graphics/pokemon/abomachulk/back.4bpp.smol"); + const u16 gMonPalette_Abomachulk[] = INCBIN_U16("graphics/pokemon/abomachulk/front.gbapal"); + const u16 gMonShinyPalette_Abomachulk[] = INCBIN_U16("graphics/pokemon/abomachulk/back.gbapal"); + const u8 gMonIcon_Abomachulk[] = INCBIN_U8("graphics/pokemon/abomachulk/icon.4bpp"); + + const u32 gMonFrontPic_Machitan[] = INCBIN_U32("graphics/pokemon/machitan/front.4bpp.smol"); + const u32 gMonBackPic_Machitan[] = INCBIN_U32("graphics/pokemon/machitan/back.4bpp.smol"); + const u16 gMonPalette_Machitan[] = INCBIN_U16("graphics/pokemon/machitan/front.gbapal"); + const u16 gMonShinyPalette_Machitan[] = INCBIN_U16("graphics/pokemon/machitan/back.gbapal"); + const u8 gMonIcon_Machitan[] = INCBIN_U8("graphics/pokemon/machitan/icon.4bpp"); + + const u32 gMonFrontPic_Mucktribel[] = INCBIN_U32("graphics/pokemon/mucktribel/front.4bpp.smol"); + const u32 gMonBackPic_Mucktribel[] = INCBIN_U32("graphics/pokemon/mucktribel/back.4bpp.smol"); + const u16 gMonPalette_Mucktribel[] = INCBIN_U16("graphics/pokemon/mucktribel/front.gbapal"); + const u16 gMonShinyPalette_Mucktribel[] = INCBIN_U16("graphics/pokemon/mucktribel/back.gbapal"); + const u8 gMonIcon_Mucktribel[] = INCBIN_U8("graphics/pokemon/mucktribel/icon.4bpp"); + + const u32 gMonFrontPic_Carnabell[] = INCBIN_U32("graphics/pokemon/carnabell/front.4bpp.smol"); + const u32 gMonBackPic_Carnabell[] = INCBIN_U32("graphics/pokemon/carnabell/back.4bpp.smol"); + const u16 gMonPalette_Carnabell[] = INCBIN_U16("graphics/pokemon/carnabell/front.gbapal"); + const u16 gMonShinyPalette_Carnabell[] = INCBIN_U16("graphics/pokemon/carnabell/back.gbapal"); + const u8 gMonIcon_Carnabell[] = INCBIN_U8("graphics/pokemon/carnabell/icon.4bpp"); + + const u32 gMonFrontPic_Devlora[] = INCBIN_U32("graphics/pokemon/devlora/front.4bpp.smol"); + const u32 gMonBackPic_Devlora[] = INCBIN_U32("graphics/pokemon/devlora/back.4bpp.smol"); + const u16 gMonPalette_Devlora[] = INCBIN_U16("graphics/pokemon/devlora/front.gbapal"); + const u16 gMonShinyPalette_Devlora[] = INCBIN_U16("graphics/pokemon/devlora/back.gbapal"); + const u8 gMonIcon_Devlora[] = INCBIN_U8("graphics/pokemon/devlora/icon.4bpp"); + + const u32 gMonFrontPic_Tentacate[] = INCBIN_U32("graphics/pokemon/tentacate/front.4bpp.smol"); + const u32 gMonBackPic_Tentacate[] = INCBIN_U32("graphics/pokemon/tentacate/back.4bpp.smol"); + const u16 gMonPalette_Tentacate[] = INCBIN_U16("graphics/pokemon/tentacate/front.gbapal"); + const u16 gMonShinyPalette_Tentacate[] = INCBIN_U16("graphics/pokemon/tentacate/back.gbapal"); + const u8 gMonIcon_Tentacate[] = INCBIN_U8("graphics/pokemon/tentacate/icon.4bpp"); + + const u32 gMonFrontPic_Tentaboma[] = INCBIN_U32("graphics/pokemon/tentaboma/front.4bpp.smol"); + const u32 gMonBackPic_Tentaboma[] = INCBIN_U32("graphics/pokemon/tentaboma/back.4bpp.smol"); + const u16 gMonPalette_Tentaboma[] = INCBIN_U16("graphics/pokemon/tentaboma/front.gbapal"); + const u16 gMonShinyPalette_Tentaboma[] = INCBIN_U16("graphics/pokemon/tentaboma/back.gbapal"); + const u8 gMonIcon_Tentaboma[] = INCBIN_U8("graphics/pokemon/tentaboma/icon.4bpp"); + + const u32 gMonFrontPic_Slagolem[] = INCBIN_U32("graphics/pokemon/slagolem/front.4bpp.smol"); + const u32 gMonBackPic_Slagolem[] = INCBIN_U32("graphics/pokemon/slagolem/back.4bpp.smol"); + const u16 gMonPalette_Slagolem[] = INCBIN_U16("graphics/pokemon/slagolem/front.gbapal"); + const u16 gMonShinyPalette_Slagolem[] = INCBIN_U16("graphics/pokemon/slagolem/back.gbapal"); + const u8 gMonIcon_Slagolem[] = INCBIN_U8("graphics/pokemon/slagolem/icon.4bpp"); + + const u32 gMonFrontPic_Moltrem[] = INCBIN_U32("graphics/pokemon/moltrem/front.4bpp.smol"); + const u32 gMonBackPic_Moltrem[] = INCBIN_U32("graphics/pokemon/moltrem/back.4bpp.smol"); + const u16 gMonPalette_Moltrem[] = INCBIN_U16("graphics/pokemon/moltrem/front.gbapal"); + const u16 gMonShinyPalette_Moltrem[] = INCBIN_U16("graphics/pokemon/moltrem/back.gbapal"); + const u8 gMonIcon_Moltrem[] = INCBIN_U8("graphics/pokemon/moltrem/icon.4bpp"); + + const u32 gMonFrontPic_Volcanicol[] = INCBIN_U32("graphics/pokemon/volcanicol/front.4bpp.smol"); + const u32 gMonBackPic_Volcanicol[] = INCBIN_U32("graphics/pokemon/volcanicol/back.4bpp.smol"); + const u16 gMonPalette_Volcanicol[] = INCBIN_U16("graphics/pokemon/volcanicol/front.gbapal"); + const u16 gMonShinyPalette_Volcanicol[] = INCBIN_U16("graphics/pokemon/volcanicol/back.gbapal"); + const u8 gMonIcon_Volcanicol[] = INCBIN_U8("graphics/pokemon/volcanicol/icon.4bpp"); + + const u32 gMonFrontPic_Combustang[] = INCBIN_U32("graphics/pokemon/combustang/front.4bpp.smol"); + const u32 gMonBackPic_Combustang[] = INCBIN_U32("graphics/pokemon/combustang/back.4bpp.smol"); + const u16 gMonPalette_Combustang[] = INCBIN_U16("graphics/pokemon/combustang/front.gbapal"); + const u16 gMonShinyPalette_Combustang[] = INCBIN_U16("graphics/pokemon/combustang/back.gbapal"); + const u8 gMonIcon_Combustang[] = INCBIN_U8("graphics/pokemon/combustang/icon.4bpp"); + + const u32 gMonFrontPic_Knightmare[] = INCBIN_U32("graphics/pokemon/knightmare/front.4bpp.smol"); + const u32 gMonBackPic_Knightmare[] = INCBIN_U32("graphics/pokemon/knightmare/back.4bpp.smol"); + const u16 gMonPalette_Knightmare[] = INCBIN_U16("graphics/pokemon/knightmare/front.gbapal"); + const u16 gMonShinyPalette_Knightmare[] = INCBIN_U16("graphics/pokemon/knightmare/back.gbapal"); + const u8 gMonIcon_Knightmare[] = INCBIN_U8("graphics/pokemon/knightmare/icon.4bpp"); + + const u32 gMonFrontPic_Slowmate[] = INCBIN_U32("graphics/pokemon/slowmate/front.4bpp.smol"); + const u32 gMonBackPic_Slowmate[] = INCBIN_U32("graphics/pokemon/slowmate/back.4bpp.smol"); + const u16 gMonPalette_Slowmate[] = INCBIN_U16("graphics/pokemon/slowmate/front.gbapal"); + const u16 gMonShinyPalette_Slowmate[] = INCBIN_U16("graphics/pokemon/slowmate/back.gbapal"); + const u8 gMonIcon_Slowmate[] = INCBIN_U8("graphics/pokemon/slowmate/icon.4bpp"); + + const u32 gMonFrontPic_Slowchum[] = INCBIN_U32("graphics/pokemon/slowchum/front.4bpp.smol"); + const u32 gMonBackPic_Slowchum[] = INCBIN_U32("graphics/pokemon/slowchum/back.4bpp.smol"); + const u16 gMonPalette_Slowchum[] = INCBIN_U16("graphics/pokemon/slowchum/front.gbapal"); + const u16 gMonShinyPalette_Slowchum[] = INCBIN_U16("graphics/pokemon/slowchum/back.gbapal"); + const u8 gMonIcon_Slowchum[] = INCBIN_U8("graphics/pokemon/slowchum/icon.4bpp"); + + const u32 gMonFrontPic_Magnemeld[] = INCBIN_U32("graphics/pokemon/magnemeld/front.4bpp.smol"); + const u32 gMonBackPic_Magnemeld[] = INCBIN_U32("graphics/pokemon/magnemeld/back.4bpp.smol"); + const u16 gMonPalette_Magnemeld[] = INCBIN_U16("graphics/pokemon/magnemeld/front.gbapal"); + const u16 gMonShinyPalette_Magnemeld[] = INCBIN_U16("graphics/pokemon/magnemeld/back.gbapal"); + const u8 gMonIcon_Magnemeld[] = INCBIN_U8("graphics/pokemon/magnemeld/icon.4bpp"); + + const u32 gMonFrontPic_Magnemastr[] = INCBIN_U32("graphics/pokemon/magnemastr/front.4bpp.smol"); + const u32 gMonBackPic_Magnemastr[] = INCBIN_U32("graphics/pokemon/magnemastr/back.4bpp.smol"); + const u16 gMonPalette_Magnemastr[] = INCBIN_U16("graphics/pokemon/magnemastr/front.gbapal"); + const u16 gMonShinyPalette_Magnemastr[] = INCBIN_U16("graphics/pokemon/magnemastr/back.gbapal"); + const u8 gMonIcon_Magnemastr[] = INCBIN_U8("graphics/pokemon/magnemastr/icon.4bpp"); + + const u32 gMonFrontPic_Forfowld[] = INCBIN_U32("graphics/pokemon/forfowld/front.4bpp.smol"); + const u32 gMonBackPic_Forfowld[] = INCBIN_U32("graphics/pokemon/forfowld/back.4bpp.smol"); + const u16 gMonPalette_Forfowld[] = INCBIN_U16("graphics/pokemon/forfowld/front.gbapal"); + const u16 gMonShinyPalette_Forfowld[] = INCBIN_U16("graphics/pokemon/forfowld/back.gbapal"); + const u8 gMonIcon_Forfowld[] = INCBIN_U8("graphics/pokemon/forfowld/icon.4bpp"); + + const u32 gMonFrontPic_Fowlntom[] = INCBIN_U32("graphics/pokemon/fowlntom/front.4bpp.smol"); + const u32 gMonBackPic_Fowlntom[] = INCBIN_U32("graphics/pokemon/fowlntom/back.4bpp.smol"); + const u16 gMonPalette_Fowlntom[] = INCBIN_U16("graphics/pokemon/fowlntom/front.gbapal"); + const u16 gMonShinyPalette_Fowlntom[] = INCBIN_U16("graphics/pokemon/fowlntom/back.gbapal"); + const u8 gMonIcon_Fowlntom[] = INCBIN_U8("graphics/pokemon/fowlntom/icon.4bpp"); + + const u32 gMonFrontPic_Quadodo[] = INCBIN_U32("graphics/pokemon/quadodo/front.4bpp.smol"); + const u32 gMonBackPic_Quadodo[] = INCBIN_U32("graphics/pokemon/quadodo/back.4bpp.smol"); + const u16 gMonPalette_Quadodo[] = INCBIN_U16("graphics/pokemon/quadodo/front.gbapal"); + const u16 gMonShinyPalette_Quadodo[] = INCBIN_U16("graphics/pokemon/quadodo/back.gbapal"); + const u8 gMonIcon_Quadodo[] = INCBIN_U8("graphics/pokemon/quadodo/icon.4bpp"); + + const u32 gMonFrontPic_Dodozen[] = INCBIN_U32("graphics/pokemon/dodozen/front.4bpp.smol"); + const u32 gMonBackPic_Dodozen[] = INCBIN_U32("graphics/pokemon/dodozen/back.4bpp.smol"); + const u16 gMonPalette_Dodozen[] = INCBIN_U16("graphics/pokemon/dodozen/front.gbapal"); + const u16 gMonShinyPalette_Dodozen[] = INCBIN_U16("graphics/pokemon/dodozen/back.gbapal"); + const u8 gMonIcon_Dodozen[] = INCBIN_U8("graphics/pokemon/dodozen/icon.4bpp"); + + const u32 gMonFrontPic_Preciped[] = INCBIN_U32("graphics/pokemon/preciped/front.4bpp.smol"); + const u32 gMonBackPic_Preciped[] = INCBIN_U32("graphics/pokemon/preciped/back.4bpp.smol"); + const u16 gMonPalette_Preciped[] = INCBIN_U16("graphics/pokemon/preciped/front.gbapal"); + const u16 gMonShinyPalette_Preciped[] = INCBIN_U16("graphics/pokemon/preciped/back.gbapal"); + const u8 gMonIcon_Preciped[] = INCBIN_U8("graphics/pokemon/preciped/icon.4bpp"); + + const u32 gMonFrontPic_Manatii[] = INCBIN_U32("graphics/pokemon/manatii/front.4bpp.smol"); + const u32 gMonBackPic_Manatii[] = INCBIN_U32("graphics/pokemon/manatii/back.4bpp.smol"); + const u16 gMonPalette_Manatii[] = INCBIN_U16("graphics/pokemon/manatii/front.gbapal"); + const u16 gMonShinyPalette_Manatii[] = INCBIN_U16("graphics/pokemon/manatii/back.gbapal"); + const u8 gMonIcon_Manatii[] = INCBIN_U8("graphics/pokemon/manatii/icon.4bpp"); + + const u32 gMonFrontPic_Gunk[] = INCBIN_U32("graphics/pokemon/gunk/front.4bpp.smol"); + const u32 gMonBackPic_Gunk[] = INCBIN_U32("graphics/pokemon/gunk/back.4bpp.smol"); + const u16 gMonPalette_Gunk[] = INCBIN_U16("graphics/pokemon/gunk/front.gbapal"); + const u16 gMonShinyPalette_Gunk[] = INCBIN_U16("graphics/pokemon/gunk/back.gbapal"); + const u8 gMonIcon_Gunk[] = INCBIN_U8("graphics/pokemon/gunk/icon.4bpp"); + + const u32 gMonFrontPic_Skum[] = INCBIN_U32("graphics/pokemon/skum/front.4bpp.smol"); + const u32 gMonBackPic_Skum[] = INCBIN_U32("graphics/pokemon/skum/back.4bpp.smol"); + const u16 gMonPalette_Skum[] = INCBIN_U16("graphics/pokemon/skum/front.gbapal"); + const u16 gMonShinyPalette_Skum[] = INCBIN_U16("graphics/pokemon/skum/back.gbapal"); + const u8 gMonIcon_Skum[] = INCBIN_U8("graphics/pokemon/skum/icon.4bpp"); + + const u32 gMonFrontPic_Anenemy[] = INCBIN_U32("graphics/pokemon/anenemy/front.4bpp.smol"); + const u32 gMonBackPic_Anenemy[] = INCBIN_U32("graphics/pokemon/anenemy/back.4bpp.smol"); + const u16 gMonPalette_Anenemy[] = INCBIN_U16("graphics/pokemon/anenemy/front.gbapal"); + const u16 gMonShinyPalette_Anenemy[] = INCBIN_U16("graphics/pokemon/anenemy/back.gbapal"); + const u8 gMonIcon_Anenemy[] = INCBIN_U8("graphics/pokemon/anenemy/icon.4bpp"); + + const u32 gMonFrontPic_Glaishell[] = INCBIN_U32("graphics/pokemon/glaishell/front.4bpp.smol"); + const u32 gMonBackPic_Glaishell[] = INCBIN_U32("graphics/pokemon/glaishell/back.4bpp.smol"); + const u16 gMonPalette_Glaishell[] = INCBIN_U16("graphics/pokemon/glaishell/front.gbapal"); + const u16 gMonShinyPalette_Glaishell[] = INCBIN_U16("graphics/pokemon/glaishell/back.gbapal"); + const u8 gMonIcon_Glaishell[] = INCBIN_U8("graphics/pokemon/glaishell/icon.4bpp"); + + const u32 gMonFrontPic_Gengone[] = INCBIN_U32("graphics/pokemon/gengone/front.4bpp.smol"); + const u32 gMonBackPic_Gengone[] = INCBIN_U32("graphics/pokemon/gengone/back.4bpp.smol"); + const u16 gMonPalette_Gengone[] = INCBIN_U16("graphics/pokemon/gengone/front.gbapal"); + const u16 gMonShinyPalette_Gengone[] = INCBIN_U16("graphics/pokemon/gengone/back.gbapal"); + const u8 gMonIcon_Gengone[] = INCBIN_U8("graphics/pokemon/gengone/icon.4bpp"); + + const u32 gMonFrontPic_Poltergast[] = INCBIN_U32("graphics/pokemon/poltergast/front.4bpp.smol"); + const u32 gMonBackPic_Poltergast[] = INCBIN_U32("graphics/pokemon/poltergast/back.4bpp.smol"); + const u16 gMonPalette_Poltergast[] = INCBIN_U16("graphics/pokemon/poltergast/front.gbapal"); + const u16 gMonShinyPalette_Poltergast[] = INCBIN_U16("graphics/pokemon/poltergast/back.gbapal"); + const u8 gMonIcon_Poltergast[] = INCBIN_U8("graphics/pokemon/poltergast/icon.4bpp"); + + const u32 gMonFrontPic_Grimm[] = INCBIN_U32("graphics/pokemon/grimm/front.4bpp.smol"); + const u32 gMonBackPic_Grimm[] = INCBIN_U32("graphics/pokemon/grimm/back.4bpp.smol"); + const u16 gMonPalette_Grimm[] = INCBIN_U16("graphics/pokemon/grimm/front.gbapal"); + const u16 gMonShinyPalette_Grimm[] = INCBIN_U16("graphics/pokemon/grimm/back.gbapal"); + const u8 gMonIcon_Grimm[] = INCBIN_U8("graphics/pokemon/grimm/icon.4bpp"); + + const u32 gMonFrontPic_Platnix[] = INCBIN_U32("graphics/pokemon/platnix/front.4bpp.smol"); + const u32 gMonBackPic_Platnix[] = INCBIN_U32("graphics/pokemon/platnix/back.4bpp.smol"); + const u16 gMonPalette_Platnix[] = INCBIN_U16("graphics/pokemon/platnix/front.gbapal"); + const u16 gMonShinyPalette_Platnix[] = INCBIN_U16("graphics/pokemon/platnix/back.gbapal"); + const u8 gMonIcon_Platnix[] = INCBIN_U8("graphics/pokemon/platnix/icon.4bpp"); + + const u32 gMonFrontPic_Obsidianix[] = INCBIN_U32("graphics/pokemon/obsidianix/front.4bpp.smol"); + const u32 gMonBackPic_Obsidianix[] = INCBIN_U32("graphics/pokemon/obsidianix/back.4bpp.smol"); + const u16 gMonPalette_Obsidianix[] = INCBIN_U16("graphics/pokemon/obsidianix/front.gbapal"); + const u16 gMonShinyPalette_Obsidianix[] = INCBIN_U16("graphics/pokemon/obsidianix/back.gbapal"); + const u8 gMonIcon_Obsidianix[] = INCBIN_U8("graphics/pokemon/obsidianix/icon.4bpp"); + + const u32 gMonFrontPic_Stalagmix[] = INCBIN_U32("graphics/pokemon/stalagmix/front.4bpp.smol"); + const u32 gMonBackPic_Stalagmix[] = INCBIN_U32("graphics/pokemon/stalagmix/back.4bpp.smol"); + const u16 gMonPalette_Stalagmix[] = INCBIN_U16("graphics/pokemon/stalagmix/front.gbapal"); + const u16 gMonShinyPalette_Stalagmix[] = INCBIN_U16("graphics/pokemon/stalagmix/back.gbapal"); + const u8 gMonIcon_Stalagmix[] = INCBIN_U8("graphics/pokemon/stalagmix/icon.4bpp"); + + const u32 gMonFrontPic_Lulloo[] = INCBIN_U32("graphics/pokemon/lulloo/front.4bpp.smol"); + const u32 gMonBackPic_Lulloo[] = INCBIN_U32("graphics/pokemon/lulloo/back.4bpp.smol"); + const u16 gMonPalette_Lulloo[] = INCBIN_U16("graphics/pokemon/lulloo/front.gbapal"); + const u16 gMonShinyPalette_Lulloo[] = INCBIN_U16("graphics/pokemon/lulloo/back.gbapal"); + const u8 gMonIcon_Lulloo[] = INCBIN_U8("graphics/pokemon/lulloo/icon.4bpp"); + + const u32 gMonFrontPic_Somnisooth[] = INCBIN_U32("graphics/pokemon/somnisooth/front.4bpp.smol"); + const u32 gMonBackPic_Somnisooth[] = INCBIN_U32("graphics/pokemon/somnisooth/back.4bpp.smol"); + const u16 gMonPalette_Somnisooth[] = INCBIN_U16("graphics/pokemon/somnisooth/front.gbapal"); + const u16 gMonShinyPalette_Somnisooth[] = INCBIN_U16("graphics/pokemon/somnisooth/back.gbapal"); + const u8 gMonIcon_Somnisooth[] = INCBIN_U8("graphics/pokemon/somnisooth/icon.4bpp"); + + const u32 gMonFrontPic_Kraklaw[] = INCBIN_U32("graphics/pokemon/kraklaw/front.4bpp.smol"); + const u32 gMonBackPic_Kraklaw[] = INCBIN_U32("graphics/pokemon/kraklaw/back.4bpp.smol"); + const u16 gMonPalette_Kraklaw[] = INCBIN_U16("graphics/pokemon/kraklaw/front.gbapal"); + const u16 gMonShinyPalette_Kraklaw[] = INCBIN_U16("graphics/pokemon/kraklaw/back.gbapal"); + const u8 gMonIcon_Kraklaw[] = INCBIN_U8("graphics/pokemon/kraklaw/icon.4bpp"); + + const u32 gMonFrontPic_Teklawno[] = INCBIN_U32("graphics/pokemon/teklawno/front.4bpp.smol"); + const u32 gMonBackPic_Teklawno[] = INCBIN_U32("graphics/pokemon/teklawno/back.4bpp.smol"); + const u16 gMonPalette_Teklawno[] = INCBIN_U16("graphics/pokemon/teklawno/front.gbapal"); + const u16 gMonShinyPalette_Teklawno[] = INCBIN_U16("graphics/pokemon/teklawno/back.gbapal"); + const u8 gMonIcon_Teklawno[] = INCBIN_U8("graphics/pokemon/teklawno/icon.4bpp"); + + const u32 gMonFrontPic_Electrodes[] = INCBIN_U32("graphics/pokemon/electrodes/front.4bpp.smol"); + const u32 gMonBackPic_Electrodes[] = INCBIN_U32("graphics/pokemon/electrodes/back.4bpp.smol"); + const u16 gMonPalette_Electrodes[] = INCBIN_U16("graphics/pokemon/electrodes/front.gbapal"); + const u16 gMonShinyPalette_Electrodes[] = INCBIN_U16("graphics/pokemon/electrodes/back.gbapal"); + const u8 gMonIcon_Electrodes[] = INCBIN_U8("graphics/pokemon/electrodes/icon.4bpp"); + + const u32 gMonFrontPic_Electrodex[] = INCBIN_U32("graphics/pokemon/electrodex/front.4bpp.smol"); + const u32 gMonBackPic_Electrodex[] = INCBIN_U32("graphics/pokemon/electrodex/back.4bpp.smol"); + const u16 gMonPalette_Electrodex[] = INCBIN_U16("graphics/pokemon/electrodex/front.gbapal"); + const u16 gMonShinyPalette_Electrodex[] = INCBIN_U16("graphics/pokemon/electrodex/back.gbapal"); + const u8 gMonIcon_Electrodex[] = INCBIN_U8("graphics/pokemon/electrodex/icon.4bpp"); + + const u32 gMonFrontPic_Electrodem[] = INCBIN_U32("graphics/pokemon/electrodem/front.4bpp.smol"); + const u32 gMonBackPic_Electrodem[] = INCBIN_U32("graphics/pokemon/electrodem/back.4bpp.smol"); + const u16 gMonPalette_Electrodem[] = INCBIN_U16("graphics/pokemon/electrodem/front.gbapal"); + const u16 gMonShinyPalette_Electrodem[] = INCBIN_U16("graphics/pokemon/electrodem/back.gbapal"); + const u8 gMonIcon_Electrodem[] = INCBIN_U8("graphics/pokemon/electrodem/icon.4bpp"); + + const u32 gMonFrontPic_Exeggity[] = INCBIN_U32("graphics/pokemon/exeggity/front.4bpp.smol"); + const u32 gMonBackPic_Exeggity[] = INCBIN_U32("graphics/pokemon/exeggity/back.4bpp.smol"); + const u16 gMonPalette_Exeggity[] = INCBIN_U16("graphics/pokemon/exeggity/front.gbapal"); + const u16 gMonShinyPalette_Exeggity[] = INCBIN_U16("graphics/pokemon/exeggity/back.gbapal"); + const u8 gMonIcon_Exeggity[] = INCBIN_U8("graphics/pokemon/exeggity/icon.4bpp"); + + const u32 gMonFrontPic_Exeggtric[] = INCBIN_U32("graphics/pokemon/exeggtric/front.4bpp.smol"); + const u32 gMonBackPic_Exeggtric[] = INCBIN_U32("graphics/pokemon/exeggtric/back.4bpp.smol"); + const u16 gMonPalette_Exeggtric[] = INCBIN_U16("graphics/pokemon/exeggtric/front.gbapal"); + const u16 gMonShinyPalette_Exeggtric[] = INCBIN_U16("graphics/pokemon/exeggtric/back.gbapal"); + const u8 gMonIcon_Exeggtric[] = INCBIN_U8("graphics/pokemon/exeggtric/icon.4bpp"); + + const u32 gMonFrontPic_Osselobber[] = INCBIN_U32("graphics/pokemon/osselobber/front.4bpp.smol"); + const u32 gMonBackPic_Osselobber[] = INCBIN_U32("graphics/pokemon/osselobber/back.4bpp.smol"); + const u16 gMonPalette_Osselobber[] = INCBIN_U16("graphics/pokemon/osselobber/front.gbapal"); + const u16 gMonShinyPalette_Osselobber[] = INCBIN_U16("graphics/pokemon/osselobber/back.gbapal"); + const u8 gMonIcon_Osselobber[] = INCBIN_U8("graphics/pokemon/osselobber/icon.4bpp"); + + const u32 gMonFrontPic_Wraiwrath[] = INCBIN_U32("graphics/pokemon/wraiwrath/front.4bpp.smol"); + const u32 gMonBackPic_Wraiwrath[] = INCBIN_U32("graphics/pokemon/wraiwrath/back.4bpp.smol"); + const u16 gMonPalette_Wraiwrath[] = INCBIN_U16("graphics/pokemon/wraiwrath/front.gbapal"); + const u16 gMonShinyPalette_Wraiwrath[] = INCBIN_U16("graphics/pokemon/wraiwrath/back.gbapal"); + const u8 gMonIcon_Wraiwrath[] = INCBIN_U8("graphics/pokemon/wraiwrath/icon.4bpp"); + + const u32 gMonFrontPic_Cleevoyant[] = INCBIN_U32("graphics/pokemon/cleevoyant/front.4bpp.smol"); + const u32 gMonBackPic_Cleevoyant[] = INCBIN_U32("graphics/pokemon/cleevoyant/back.4bpp.smol"); + const u16 gMonPalette_Cleevoyant[] = INCBIN_U16("graphics/pokemon/cleevoyant/front.gbapal"); + const u16 gMonShinyPalette_Cleevoyant[] = INCBIN_U16("graphics/pokemon/cleevoyant/back.gbapal"); + const u8 gMonIcon_Cleevoyant[] = INCBIN_U8("graphics/pokemon/cleevoyant/icon.4bpp"); + + const u32 gMonFrontPic_Spiritulee[] = INCBIN_U32("graphics/pokemon/spiritulee/front.4bpp.smol"); + const u32 gMonBackPic_Spiritulee[] = INCBIN_U32("graphics/pokemon/spiritulee/back.4bpp.smol"); + const u16 gMonPalette_Spiritulee[] = INCBIN_U16("graphics/pokemon/spiritulee/front.gbapal"); + const u16 gMonShinyPalette_Spiritulee[] = INCBIN_U16("graphics/pokemon/spiritulee/back.gbapal"); + const u8 gMonIcon_Spiritulee[] = INCBIN_U8("graphics/pokemon/spiritulee/icon.4bpp"); + + const u32 gMonFrontPic_Enchanced[] = INCBIN_U32("graphics/pokemon/enchanced/front.4bpp.smol"); + const u32 gMonBackPic_Enchanced[] = INCBIN_U32("graphics/pokemon/enchanced/back.4bpp.smol"); + const u16 gMonPalette_Enchanced[] = INCBIN_U16("graphics/pokemon/enchanced/front.gbapal"); + const u16 gMonShinyPalette_Enchanced[] = INCBIN_U16("graphics/pokemon/enchanced/back.gbapal"); + const u8 gMonIcon_Enchanced[] = INCBIN_U8("graphics/pokemon/enchanced/icon.4bpp"); + + const u32 gMonFrontPic_Radiachan[] = INCBIN_U32("graphics/pokemon/radiachan/front.4bpp.smol"); + const u32 gMonBackPic_Radiachan[] = INCBIN_U32("graphics/pokemon/radiachan/back.4bpp.smol"); + const u16 gMonPalette_Radiachan[] = INCBIN_U16("graphics/pokemon/radiachan/front.gbapal"); + const u16 gMonShinyPalette_Radiachan[] = INCBIN_U16("graphics/pokemon/radiachan/back.gbapal"); + const u8 gMonIcon_Radiachan[] = INCBIN_U8("graphics/pokemon/radiachan/icon.4bpp"); + + const u32 gMonFrontPic_Lickilolly[] = INCBIN_U32("graphics/pokemon/lickilolly/front.4bpp.smol"); + const u32 gMonBackPic_Lickilolly[] = INCBIN_U32("graphics/pokemon/lickilolly/back.4bpp.smol"); + const u16 gMonPalette_Lickilolly[] = INCBIN_U16("graphics/pokemon/lickilolly/front.gbapal"); + const u16 gMonShinyPalette_Lickilolly[] = INCBIN_U16("graphics/pokemon/lickilolly/back.gbapal"); + const u8 gMonIcon_Lickilolly[] = INCBIN_U8("graphics/pokemon/lickilolly/icon.4bpp"); + + const u32 gMonFrontPic_Lickilato[] = INCBIN_U32("graphics/pokemon/lickilato/front.4bpp.smol"); + const u32 gMonBackPic_Lickilato[] = INCBIN_U32("graphics/pokemon/lickilato/back.4bpp.smol"); + const u16 gMonPalette_Lickilato[] = INCBIN_U16("graphics/pokemon/lickilato/front.gbapal"); + const u16 gMonShinyPalette_Lickilato[] = INCBIN_U16("graphics/pokemon/lickilato/back.gbapal"); + const u8 gMonIcon_Lickilato[] = INCBIN_U8("graphics/pokemon/lickilato/icon.4bpp"); + + const u32 gMonFrontPic_Heeving[] = INCBIN_U32("graphics/pokemon/heeving/front.4bpp.smol"); + const u32 gMonBackPic_Heeving[] = INCBIN_U32("graphics/pokemon/heeving/back.4bpp.smol"); + const u16 gMonPalette_Heeving[] = INCBIN_U16("graphics/pokemon/heeving/front.gbapal"); + const u16 gMonShinyPalette_Heeving[] = INCBIN_U16("graphics/pokemon/heeving/back.gbapal"); + const u8 gMonIcon_Heeving[] = INCBIN_U8("graphics/pokemon/heeving/icon.4bpp"); + + const u32 gMonFrontPic_Chohking[] = INCBIN_U32("graphics/pokemon/chohking/front.4bpp.smol"); + const u32 gMonBackPic_Chohking[] = INCBIN_U32("graphics/pokemon/chohking/back.4bpp.smol"); + const u16 gMonPalette_Chohking[] = INCBIN_U16("graphics/pokemon/chohking/front.gbapal"); + const u16 gMonShinyPalette_Chohking[] = INCBIN_U16("graphics/pokemon/chohking/back.gbapal"); + const u8 gMonIcon_Chohking[] = INCBIN_U8("graphics/pokemon/chohking/icon.4bpp"); + + const u32 gMonFrontPic_Rhymarkabl[] = INCBIN_U32("graphics/pokemon/rhymarkabl/front.4bpp.smol"); + const u32 gMonBackPic_Rhymarkabl[] = INCBIN_U32("graphics/pokemon/rhymarkabl/back.4bpp.smol"); + const u16 gMonPalette_Rhymarkabl[] = INCBIN_U16("graphics/pokemon/rhymarkabl/front.gbapal"); + const u16 gMonShinyPalette_Rhymarkabl[] = INCBIN_U16("graphics/pokemon/rhymarkabl/back.gbapal"); + const u8 gMonIcon_Rhymarkabl[] = INCBIN_U8("graphics/pokemon/rhymarkabl/icon.4bpp"); + + const u32 gMonFrontPic_Rhylic[] = INCBIN_U32("graphics/pokemon/rhylic/front.4bpp.smol"); + const u32 gMonBackPic_Rhylic[] = INCBIN_U32("graphics/pokemon/rhylic/back.4bpp.smol"); + const u16 gMonPalette_Rhylic[] = INCBIN_U16("graphics/pokemon/rhylic/front.gbapal"); + const u16 gMonShinyPalette_Rhylic[] = INCBIN_U16("graphics/pokemon/rhylic/back.gbapal"); + const u8 gMonIcon_Rhylic[] = INCBIN_U8("graphics/pokemon/rhylic/icon.4bpp"); + + const u32 gMonFrontPic_Rhyborn[] = INCBIN_U32("graphics/pokemon/rhyborn/front.4bpp.smol"); + const u32 gMonBackPic_Rhyborn[] = INCBIN_U32("graphics/pokemon/rhyborn/back.4bpp.smol"); + const u16 gMonPalette_Rhyborn[] = INCBIN_U16("graphics/pokemon/rhyborn/front.gbapal"); + const u16 gMonShinyPalette_Rhyborn[] = INCBIN_U16("graphics/pokemon/rhyborn/back.gbapal"); + const u8 gMonIcon_Rhyborn[] = INCBIN_U8("graphics/pokemon/rhyborn/icon.4bpp"); + + const u32 gMonFrontPic_Gogettey[] = INCBIN_U32("graphics/pokemon/gogettey/front.4bpp.smol"); + const u32 gMonBackPic_Gogettey[] = INCBIN_U32("graphics/pokemon/gogettey/back.4bpp.smol"); + const u16 gMonPalette_Gogettey[] = INCBIN_U16("graphics/pokemon/gogettey/front.gbapal"); + const u16 gMonShinyPalette_Gogettey[] = INCBIN_U16("graphics/pokemon/gogettey/back.gbapal"); + const u8 gMonIcon_Gogettey[] = INCBIN_U8("graphics/pokemon/gogettey/icon.4bpp"); + + const u32 gMonFrontPic_Lukkey[] = INCBIN_U32("graphics/pokemon/lukkey/front.4bpp.smol"); + const u32 gMonBackPic_Lukkey[] = INCBIN_U32("graphics/pokemon/lukkey/back.4bpp.smol"); + const u16 gMonPalette_Lukkey[] = INCBIN_U16("graphics/pokemon/lukkey/front.gbapal"); + const u16 gMonShinyPalette_Lukkey[] = INCBIN_U16("graphics/pokemon/lukkey/back.gbapal"); + const u8 gMonIcon_Lukkey[] = INCBIN_U8("graphics/pokemon/lukkey/icon.4bpp"); + + const u32 gMonFrontPic_Fortunitey[] = INCBIN_U32("graphics/pokemon/fortunitey/front.4bpp.smol"); + const u32 gMonBackPic_Fortunitey[] = INCBIN_U32("graphics/pokemon/fortunitey/back.4bpp.smol"); + const u16 gMonPalette_Fortunitey[] = INCBIN_U16("graphics/pokemon/fortunitey/front.gbapal"); + const u16 gMonShinyPalette_Fortunitey[] = INCBIN_U16("graphics/pokemon/fortunitey/back.gbapal"); + const u8 gMonIcon_Fortunitey[] = INCBIN_U8("graphics/pokemon/fortunitey/icon.4bpp"); + + const u32 gMonFrontPic_Tangather[] = INCBIN_U32("graphics/pokemon/tangather/front.4bpp.smol"); + const u32 gMonBackPic_Tangather[] = INCBIN_U32("graphics/pokemon/tangather/back.4bpp.smol"); + const u16 gMonPalette_Tangather[] = INCBIN_U16("graphics/pokemon/tangather/front.gbapal"); + const u16 gMonShinyPalette_Tangather[] = INCBIN_U16("graphics/pokemon/tangather/back.gbapal"); + const u8 gMonIcon_Tangather[] = INCBIN_U8("graphics/pokemon/tangather/icon.4bpp"); + + const u32 gMonFrontPic_Tangoliath[] = INCBIN_U32("graphics/pokemon/tangoliath/front.4bpp.smol"); + const u32 gMonBackPic_Tangoliath[] = INCBIN_U32("graphics/pokemon/tangoliath/back.4bpp.smol"); + const u16 gMonPalette_Tangoliath[] = INCBIN_U16("graphics/pokemon/tangoliath/front.gbapal"); + const u16 gMonShinyPalette_Tangoliath[] = INCBIN_U16("graphics/pokemon/tangoliath/back.gbapal"); + const u8 gMonIcon_Tangoliath[] = INCBIN_U8("graphics/pokemon/tangoliath/icon.4bpp"); + + const u32 gMonFrontPic_Tangrapple[] = INCBIN_U32("graphics/pokemon/tangrapple/front.4bpp.smol"); + const u32 gMonBackPic_Tangrapple[] = INCBIN_U32("graphics/pokemon/tangrapple/back.4bpp.smol"); + const u16 gMonPalette_Tangrapple[] = INCBIN_U16("graphics/pokemon/tangrapple/front.gbapal"); + const u16 gMonShinyPalette_Tangrapple[] = INCBIN_U16("graphics/pokemon/tangrapple/back.gbapal"); + const u8 gMonIcon_Tangrapple[] = INCBIN_U8("graphics/pokemon/tangrapple/icon.4bpp"); + + const u32 gMonFrontPic_Kangakid[] = INCBIN_U32("graphics/pokemon/kangakid/front.4bpp.smol"); + const u32 gMonBackPic_Kangakid[] = INCBIN_U32("graphics/pokemon/kangakid/back.4bpp.smol"); + const u16 gMonPalette_Kangakid[] = INCBIN_U16("graphics/pokemon/kangakid/front.gbapal"); + const u16 gMonShinyPalette_Kangakid[] = INCBIN_U16("graphics/pokemon/kangakid/back.gbapal"); + const u8 gMonIcon_Kangakid[] = INCBIN_U8("graphics/pokemon/kangakid/icon.4bpp"); + + const u32 gMonFrontPic_Kangallous[] = INCBIN_U32("graphics/pokemon/kangallous/front.4bpp.smol"); + const u32 gMonBackPic_Kangallous[] = INCBIN_U32("graphics/pokemon/kangallous/back.4bpp.smol"); + const u16 gMonPalette_Kangallous[] = INCBIN_U16("graphics/pokemon/kangallous/front.gbapal"); + const u16 gMonShinyPalette_Kangallous[] = INCBIN_U16("graphics/pokemon/kangallous/back.gbapal"); + const u8 gMonIcon_Kangallous[] = INCBIN_U8("graphics/pokemon/kangallous/icon.4bpp"); + + const u32 gMonFrontPic_Kangarutal[] = INCBIN_U32("graphics/pokemon/kangarutal/front.4bpp.smol"); + const u32 gMonBackPic_Kangarutal[] = INCBIN_U32("graphics/pokemon/kangarutal/back.4bpp.smol"); + const u16 gMonPalette_Kangarutal[] = INCBIN_U16("graphics/pokemon/kangarutal/front.gbapal"); + const u16 gMonShinyPalette_Kangarutal[] = INCBIN_U16("graphics/pokemon/kangarutal/back.gbapal"); + const u8 gMonIcon_Kangarutal[] = INCBIN_U8("graphics/pokemon/kangarutal/icon.4bpp"); + + const u32 gMonFrontPic_Lordra[] = INCBIN_U32("graphics/pokemon/lordra/front.4bpp.smol"); + const u32 gMonBackPic_Lordra[] = INCBIN_U32("graphics/pokemon/lordra/back.4bpp.smol"); + const u16 gMonPalette_Lordra[] = INCBIN_U16("graphics/pokemon/lordra/front.gbapal"); + const u16 gMonShinyPalette_Lordra[] = INCBIN_U16("graphics/pokemon/lordra/back.gbapal"); + const u8 gMonIcon_Lordra[] = INCBIN_U8("graphics/pokemon/lordra/icon.4bpp"); + + const u32 gMonFrontPic_Pinnadra[] = INCBIN_U32("graphics/pokemon/pinnadra/front.4bpp.smol"); + const u32 gMonBackPic_Pinnadra[] = INCBIN_U32("graphics/pokemon/pinnadra/back.4bpp.smol"); + const u16 gMonPalette_Pinnadra[] = INCBIN_U16("graphics/pokemon/pinnadra/front.gbapal"); + const u16 gMonShinyPalette_Pinnadra[] = INCBIN_U16("graphics/pokemon/pinnadra/back.gbapal"); + const u8 gMonIcon_Pinnadra[] = INCBIN_U8("graphics/pokemon/pinnadra/icon.4bpp"); + + const u32 gMonFrontPic_Searex[] = INCBIN_U32("graphics/pokemon/searex/front.4bpp.smol"); + const u32 gMonBackPic_Searex[] = INCBIN_U32("graphics/pokemon/searex/back.4bpp.smol"); + const u16 gMonPalette_Searex[] = INCBIN_U16("graphics/pokemon/searex/front.gbapal"); + const u16 gMonShinyPalette_Searex[] = INCBIN_U16("graphics/pokemon/searex/back.gbapal"); + const u8 gMonIcon_Searex[] = INCBIN_U8("graphics/pokemon/searex/icon.4bpp"); + + const u32 gMonFrontPic_Caprisea[] = INCBIN_U32("graphics/pokemon/caprisea/front.4bpp.smol"); + const u32 gMonBackPic_Caprisea[] = INCBIN_U32("graphics/pokemon/caprisea/back.4bpp.smol"); + const u16 gMonPalette_Caprisea[] = INCBIN_U16("graphics/pokemon/caprisea/front.gbapal"); + const u16 gMonShinyPalette_Caprisea[] = INCBIN_U16("graphics/pokemon/caprisea/back.gbapal"); + const u8 gMonIcon_Caprisea[] = INCBIN_U8("graphics/pokemon/caprisea/icon.4bpp"); + + const u32 gMonFrontPic_Starus[] = INCBIN_U32("graphics/pokemon/starus/front.4bpp.smol"); + const u32 gMonBackPic_Starus[] = INCBIN_U32("graphics/pokemon/starus/back.4bpp.smol"); + const u16 gMonPalette_Starus[] = INCBIN_U16("graphics/pokemon/starus/front.gbapal"); + const u16 gMonShinyPalette_Starus[] = INCBIN_U16("graphics/pokemon/starus/back.gbapal"); + const u8 gMonIcon_Starus[] = INCBIN_U8("graphics/pokemon/starus/icon.4bpp"); + + const u32 gMonFrontPic_Starwe[] = INCBIN_U32("graphics/pokemon/starwe/front.4bpp.smol"); + const u32 gMonBackPic_Starwe[] = INCBIN_U32("graphics/pokemon/starwe/back.4bpp.smol"); + const u16 gMonPalette_Starwe[] = INCBIN_U16("graphics/pokemon/starwe/front.gbapal"); + const u16 gMonShinyPalette_Starwe[] = INCBIN_U16("graphics/pokemon/starwe/back.gbapal"); + const u8 gMonIcon_Starwe[] = INCBIN_U8("graphics/pokemon/starwe/icon.4bpp"); + + const u32 gMonFrontPic_Mr_jest[] = INCBIN_U32("graphics/pokemon/mr_jest/front.4bpp.smol"); + const u32 gMonBackPic_Mr_jest[] = INCBIN_U32("graphics/pokemon/mr_jest/back.4bpp.smol"); + const u16 gMonPalette_Mr_jest[] = INCBIN_U16("graphics/pokemon/mr_jest/front.gbapal"); + const u16 gMonShinyPalette_Mr_jest[] = INCBIN_U16("graphics/pokemon/mr_jest/back.gbapal"); + const u8 gMonIcon_Mr_jest[] = INCBIN_U8("graphics/pokemon/mr_jest/icon.4bpp"); + + const u32 gMonFrontPic_Mr_fool[] = INCBIN_U32("graphics/pokemon/mr_fool/front.4bpp.smol"); + const u32 gMonBackPic_Mr_fool[] = INCBIN_U32("graphics/pokemon/mr_fool/back.4bpp.smol"); + const u16 gMonPalette_Mr_fool[] = INCBIN_U16("graphics/pokemon/mr_fool/front.gbapal"); + const u16 gMonShinyPalette_Mr_fool[] = INCBIN_U16("graphics/pokemon/mr_fool/back.gbapal"); + const u8 gMonIcon_Mr_fool[] = INCBIN_U8("graphics/pokemon/mr_fool/icon.4bpp"); + + const u32 gMonFrontPic_Razer[] = INCBIN_U32("graphics/pokemon/razer/front.4bpp.smol"); + const u32 gMonBackPic_Razer[] = INCBIN_U32("graphics/pokemon/razer/back.4bpp.smol"); + const u16 gMonPalette_Razer[] = INCBIN_U16("graphics/pokemon/razer/front.gbapal"); + const u16 gMonShinyPalette_Razer[] = INCBIN_U16("graphics/pokemon/razer/back.gbapal"); + const u8 gMonIcon_Razer[] = INCBIN_U8("graphics/pokemon/razer/icon.4bpp"); + + const u32 gMonFrontPic_Claymor[] = INCBIN_U32("graphics/pokemon/claymor/front.4bpp.smol"); + const u32 gMonBackPic_Claymor[] = INCBIN_U32("graphics/pokemon/claymor/back.4bpp.smol"); + const u16 gMonPalette_Claymor[] = INCBIN_U16("graphics/pokemon/claymor/front.gbapal"); + const u16 gMonShinyPalette_Claymor[] = INCBIN_U16("graphics/pokemon/claymor/back.gbapal"); + const u8 gMonIcon_Claymor[] = INCBIN_U8("graphics/pokemon/claymor/icon.4bpp"); + + const u32 gMonFrontPic_Jynkies[] = INCBIN_U32("graphics/pokemon/jynkies/front.4bpp.smol"); + const u32 gMonBackPic_Jynkies[] = INCBIN_U32("graphics/pokemon/jynkies/back.4bpp.smol"); + const u16 gMonPalette_Jynkies[] = INCBIN_U16("graphics/pokemon/jynkies/front.gbapal"); + const u16 gMonShinyPalette_Jynkies[] = INCBIN_U16("graphics/pokemon/jynkies/back.gbapal"); + const u8 gMonIcon_Jynkies[] = INCBIN_U8("graphics/pokemon/jynkies/icon.4bpp"); + + const u32 gMonFrontPic_Jeepers[] = INCBIN_U32("graphics/pokemon/jeepers/front.4bpp.smol"); + const u32 gMonBackPic_Jeepers[] = INCBIN_U32("graphics/pokemon/jeepers/back.4bpp.smol"); + const u16 gMonPalette_Jeepers[] = INCBIN_U16("graphics/pokemon/jeepers/front.gbapal"); + const u16 gMonShinyPalette_Jeepers[] = INCBIN_U16("graphics/pokemon/jeepers/back.gbapal"); + const u8 gMonIcon_Jeepers[] = INCBIN_U8("graphics/pokemon/jeepers/icon.4bpp"); + + const u32 gMonFrontPic_Electivine[] = INCBIN_U32("graphics/pokemon/electivine/front.4bpp.smol"); + const u32 gMonBackPic_Electivine[] = INCBIN_U32("graphics/pokemon/electivine/back.4bpp.smol"); + const u16 gMonPalette_Electivine[] = INCBIN_U16("graphics/pokemon/electivine/front.gbapal"); + const u16 gMonShinyPalette_Electivine[] = INCBIN_U16("graphics/pokemon/electivine/back.gbapal"); + const u8 gMonIcon_Electivine[] = INCBIN_U8("graphics/pokemon/electivine/icon.4bpp"); + + const u32 gMonFrontPic_Electiwizz[] = INCBIN_U32("graphics/pokemon/electiwizz/front.4bpp.smol"); + const u32 gMonBackPic_Electiwizz[] = INCBIN_U32("graphics/pokemon/electiwizz/back.4bpp.smol"); + const u16 gMonPalette_Electiwizz[] = INCBIN_U16("graphics/pokemon/electiwizz/front.gbapal"); + const u16 gMonShinyPalette_Electiwizz[] = INCBIN_U16("graphics/pokemon/electiwizz/back.gbapal"); + const u8 gMonIcon_Electiwizz[] = INCBIN_U8("graphics/pokemon/electiwizz/icon.4bpp"); + + const u32 gMonFrontPic_Magmore[] = INCBIN_U32("graphics/pokemon/magmore/front.4bpp.smol"); + const u32 gMonBackPic_Magmore[] = INCBIN_U32("graphics/pokemon/magmore/back.4bpp.smol"); + const u16 gMonPalette_Magmore[] = INCBIN_U16("graphics/pokemon/magmore/front.gbapal"); + const u16 gMonShinyPalette_Magmore[] = INCBIN_U16("graphics/pokemon/magmore/back.gbapal"); + const u8 gMonIcon_Magmore[] = INCBIN_U8("graphics/pokemon/magmore/icon.4bpp"); + + const u32 gMonFrontPic_Magmolten[] = INCBIN_U32("graphics/pokemon/magmolten/front.4bpp.smol"); + const u32 gMonBackPic_Magmolten[] = INCBIN_U32("graphics/pokemon/magmolten/back.4bpp.smol"); + const u16 gMonPalette_Magmolten[] = INCBIN_U16("graphics/pokemon/magmolten/front.gbapal"); + const u16 gMonShinyPalette_Magmolten[] = INCBIN_U16("graphics/pokemon/magmolten/back.gbapal"); + const u8 gMonIcon_Magmolten[] = INCBIN_U8("graphics/pokemon/magmolten/icon.4bpp"); + + const u32 gMonFrontPic_Pinsirior[] = INCBIN_U32("graphics/pokemon/pinsirior/front.4bpp.smol"); + const u32 gMonBackPic_Pinsirior[] = INCBIN_U32("graphics/pokemon/pinsirior/back.4bpp.smol"); + const u16 gMonPalette_Pinsirior[] = INCBIN_U16("graphics/pokemon/pinsirior/front.gbapal"); + const u16 gMonShinyPalette_Pinsirior[] = INCBIN_U16("graphics/pokemon/pinsirior/back.gbapal"); + const u8 gMonIcon_Pinsirior[] = INCBIN_U8("graphics/pokemon/pinsirior/icon.4bpp"); + + const u32 gMonFrontPic_Abyssir[] = INCBIN_U32("graphics/pokemon/abyssir/front.4bpp.smol"); + const u32 gMonBackPic_Abyssir[] = INCBIN_U32("graphics/pokemon/abyssir/back.4bpp.smol"); + const u16 gMonPalette_Abyssir[] = INCBIN_U16("graphics/pokemon/abyssir/front.gbapal"); + const u16 gMonShinyPalette_Abyssir[] = INCBIN_U16("graphics/pokemon/abyssir/back.gbapal"); + const u8 gMonIcon_Abyssir[] = INCBIN_U8("graphics/pokemon/abyssir/icon.4bpp"); + + const u32 gMonFrontPic_Taurox[] = INCBIN_U32("graphics/pokemon/taurox/front.4bpp.smol"); + const u32 gMonBackPic_Taurox[] = INCBIN_U32("graphics/pokemon/taurox/back.4bpp.smol"); + const u16 gMonPalette_Taurox[] = INCBIN_U16("graphics/pokemon/taurox/front.gbapal"); + const u16 gMonShinyPalette_Taurox[] = INCBIN_U16("graphics/pokemon/taurox/back.gbapal"); + const u8 gMonIcon_Taurox[] = INCBIN_U8("graphics/pokemon/taurox/icon.4bpp"); + + const u32 gMonFrontPic_Oxenfree[] = INCBIN_U32("graphics/pokemon/oxenfree/front.4bpp.smol"); + const u32 gMonBackPic_Oxenfree[] = INCBIN_U32("graphics/pokemon/oxenfree/back.4bpp.smol"); + const u16 gMonPalette_Oxenfree[] = INCBIN_U16("graphics/pokemon/oxenfree/front.gbapal"); + const u16 gMonShinyPalette_Oxenfree[] = INCBIN_U16("graphics/pokemon/oxenfree/back.gbapal"); + const u8 gMonIcon_Oxenfree[] = INCBIN_U8("graphics/pokemon/oxenfree/icon.4bpp"); + + const u32 gMonFrontPic_Hydrados[] = INCBIN_U32("graphics/pokemon/hydrados/front.4bpp.smol"); + const u32 gMonBackPic_Hydrados[] = INCBIN_U32("graphics/pokemon/hydrados/back.4bpp.smol"); + const u16 gMonPalette_Hydrados[] = INCBIN_U16("graphics/pokemon/hydrados/front.gbapal"); + const u16 gMonShinyPalette_Hydrados[] = INCBIN_U16("graphics/pokemon/hydrados/back.gbapal"); + const u8 gMonIcon_Hydrados[] = INCBIN_U8("graphics/pokemon/hydrados/icon.4bpp"); + + const u32 gMonFrontPic_Dracosmic[] = INCBIN_U32("graphics/pokemon/dracosmic/front.4bpp.smol"); + const u32 gMonBackPic_Dracosmic[] = INCBIN_U32("graphics/pokemon/dracosmic/back.4bpp.smol"); + const u16 gMonPalette_Dracosmic[] = INCBIN_U16("graphics/pokemon/dracosmic/front.gbapal"); + const u16 gMonShinyPalette_Dracosmic[] = INCBIN_U16("graphics/pokemon/dracosmic/back.gbapal"); + const u8 gMonIcon_Dracosmic[] = INCBIN_U8("graphics/pokemon/dracosmic/icon.4bpp"); + + const u32 gMonFrontPic_Quazar[] = INCBIN_U32("graphics/pokemon/quazar/front.4bpp.smol"); + const u32 gMonBackPic_Quazar[] = INCBIN_U32("graphics/pokemon/quazar/back.4bpp.smol"); + const u16 gMonPalette_Quazar[] = INCBIN_U16("graphics/pokemon/quazar/front.gbapal"); + const u16 gMonShinyPalette_Quazar[] = INCBIN_U16("graphics/pokemon/quazar/back.gbapal"); + const u8 gMonIcon_Quazar[] = INCBIN_U8("graphics/pokemon/quazar/icon.4bpp"); + + const u32 gMonFrontPic_Lochlass[] = INCBIN_U32("graphics/pokemon/lochlass/front.4bpp.smol"); + const u32 gMonBackPic_Lochlass[] = INCBIN_U32("graphics/pokemon/lochlass/back.4bpp.smol"); + const u16 gMonPalette_Lochlass[] = INCBIN_U16("graphics/pokemon/lochlass/front.gbapal"); + const u16 gMonShinyPalette_Lochlass[] = INCBIN_U16("graphics/pokemon/lochlass/back.gbapal"); + const u8 gMonIcon_Lochlass[] = INCBIN_U8("graphics/pokemon/lochlass/icon.4bpp"); + + const u32 gMonFrontPic_Nessea[] = INCBIN_U32("graphics/pokemon/nessea/front.4bpp.smol"); + const u32 gMonBackPic_Nessea[] = INCBIN_U32("graphics/pokemon/nessea/back.4bpp.smol"); + const u16 gMonPalette_Nessea[] = INCBIN_U16("graphics/pokemon/nessea/front.gbapal"); + const u16 gMonShinyPalette_Nessea[] = INCBIN_U16("graphics/pokemon/nessea/back.gbapal"); + const u8 gMonIcon_Nessea[] = INCBIN_U8("graphics/pokemon/nessea/icon.4bpp"); + + const u32 gMonFrontPic_Morpho[] = INCBIN_U32("graphics/pokemon/morpho/front.4bpp.smol"); + const u32 gMonBackPic_Morpho[] = INCBIN_U32("graphics/pokemon/morpho/back.4bpp.smol"); + const u16 gMonPalette_Morpho[] = INCBIN_U16("graphics/pokemon/morpho/front.gbapal"); + const u16 gMonShinyPalette_Morpho[] = INCBIN_U16("graphics/pokemon/morpho/back.gbapal"); + const u8 gMonIcon_Morpho[] = INCBIN_U8("graphics/pokemon/morpho/icon.4bpp"); + + const u32 gMonFrontPic_Metamorpho[] = INCBIN_U32("graphics/pokemon/metamorpho/front.4bpp.smol"); + const u32 gMonBackPic_Metamorpho[] = INCBIN_U32("graphics/pokemon/metamorpho/back.4bpp.smol"); + const u16 gMonPalette_Metamorpho[] = INCBIN_U16("graphics/pokemon/metamorpho/front.gbapal"); + const u16 gMonShinyPalette_Metamorpho[] = INCBIN_U16("graphics/pokemon/metamorpho/back.gbapal"); + const u8 gMonIcon_Metamorpho[] = INCBIN_U8("graphics/pokemon/metamorpho/icon.4bpp"); + + const u32 gMonFrontPic_Riveon[] = INCBIN_U32("graphics/pokemon/riveon/front.4bpp.smol"); + const u32 gMonBackPic_Riveon[] = INCBIN_U32("graphics/pokemon/riveon/back.4bpp.smol"); + const u16 gMonPalette_Riveon[] = INCBIN_U16("graphics/pokemon/riveon/front.gbapal"); + const u16 gMonShinyPalette_Riveon[] = INCBIN_U16("graphics/pokemon/riveon/back.gbapal"); + const u8 gMonIcon_Riveon[] = INCBIN_U8("graphics/pokemon/riveon/icon.4bpp"); + + const u32 gMonFrontPic_Brineon[] = INCBIN_U32("graphics/pokemon/brineon/front.4bpp.smol"); + const u32 gMonBackPic_Brineon[] = INCBIN_U32("graphics/pokemon/brineon/back.4bpp.smol"); + const u16 gMonPalette_Brineon[] = INCBIN_U16("graphics/pokemon/brineon/front.gbapal"); + const u16 gMonShinyPalette_Brineon[] = INCBIN_U16("graphics/pokemon/brineon/back.gbapal"); + const u8 gMonIcon_Brineon[] = INCBIN_U8("graphics/pokemon/brineon/icon.4bpp"); + + const u32 gMonFrontPic_Plasmeon[] = INCBIN_U32("graphics/pokemon/plasmeon/front.4bpp.smol"); + const u32 gMonBackPic_Plasmeon[] = INCBIN_U32("graphics/pokemon/plasmeon/back.4bpp.smol"); + const u16 gMonPalette_Plasmeon[] = INCBIN_U16("graphics/pokemon/plasmeon/front.gbapal"); + const u16 gMonShinyPalette_Plasmeon[] = INCBIN_U16("graphics/pokemon/plasmeon/back.gbapal"); + const u8 gMonIcon_Plasmeon[] = INCBIN_U8("graphics/pokemon/plasmeon/icon.4bpp"); + + const u32 gMonFrontPic_Galveon[] = INCBIN_U32("graphics/pokemon/galveon/front.4bpp.smol"); + const u32 gMonBackPic_Galveon[] = INCBIN_U32("graphics/pokemon/galveon/back.4bpp.smol"); + const u16 gMonPalette_Galveon[] = INCBIN_U16("graphics/pokemon/galveon/front.gbapal"); + const u16 gMonShinyPalette_Galveon[] = INCBIN_U16("graphics/pokemon/galveon/back.gbapal"); + const u8 gMonIcon_Galveon[] = INCBIN_U8("graphics/pokemon/galveon/icon.4bpp"); + + const u32 gMonFrontPic_Smoldeon[] = INCBIN_U32("graphics/pokemon/smoldeon/front.4bpp.smol"); + const u32 gMonBackPic_Smoldeon[] = INCBIN_U32("graphics/pokemon/smoldeon/back.4bpp.smol"); + const u16 gMonPalette_Smoldeon[] = INCBIN_U16("graphics/pokemon/smoldeon/front.gbapal"); + const u16 gMonShinyPalette_Smoldeon[] = INCBIN_U16("graphics/pokemon/smoldeon/back.gbapal"); + const u8 gMonIcon_Smoldeon[] = INCBIN_U8("graphics/pokemon/smoldeon/icon.4bpp"); + + const u32 gMonFrontPic_Inferneon[] = INCBIN_U32("graphics/pokemon/inferneon/front.4bpp.smol"); + const u32 gMonBackPic_Inferneon[] = INCBIN_U32("graphics/pokemon/inferneon/back.4bpp.smol"); + const u16 gMonPalette_Inferneon[] = INCBIN_U16("graphics/pokemon/inferneon/front.gbapal"); + const u16 gMonShinyPalette_Inferneon[] = INCBIN_U16("graphics/pokemon/inferneon/back.gbapal"); + const u8 gMonIcon_Inferneon[] = INCBIN_U8("graphics/pokemon/inferneon/icon.4bpp"); + + const u32 gMonFrontPic_Porygonx[] = INCBIN_U32("graphics/pokemon/porygonx/front.4bpp.smol"); + const u32 gMonBackPic_Porygonx[] = INCBIN_U32("graphics/pokemon/porygonx/back.4bpp.smol"); + const u16 gMonPalette_Porygonx[] = INCBIN_U16("graphics/pokemon/porygonx/front.gbapal"); + const u16 gMonShinyPalette_Porygonx[] = INCBIN_U16("graphics/pokemon/porygonx/back.gbapal"); + const u8 gMonIcon_Porygonx[] = INCBIN_U8("graphics/pokemon/porygonx/icon.4bpp"); + + const u32 gMonFrontPic_Porygonq[] = INCBIN_U32("graphics/pokemon/porygonq/front.4bpp.smol"); + const u32 gMonBackPic_Porygonq[] = INCBIN_U32("graphics/pokemon/porygonq/back.4bpp.smol"); + const u16 gMonPalette_Porygonq[] = INCBIN_U16("graphics/pokemon/porygonq/front.gbapal"); + const u16 gMonShinyPalette_Porygonq[] = INCBIN_U16("graphics/pokemon/porygonq/back.gbapal"); + const u8 gMonIcon_Porygonq[] = INCBIN_U8("graphics/pokemon/porygonq/icon.4bpp"); + + const u32 gMonFrontPic_Porygon2a4[] = INCBIN_U32("graphics/pokemon/porygon2a4/front.4bpp.smol"); + const u32 gMonBackPic_Porygon2a4[] = INCBIN_U32("graphics/pokemon/porygon2a4/back.4bpp.smol"); + const u16 gMonPalette_Porygon2a4[] = INCBIN_U16("graphics/pokemon/porygon2a4/front.gbapal"); + const u16 gMonShinyPalette_Porygon2a4[] = INCBIN_U16("graphics/pokemon/porygon2a4/back.gbapal"); + const u8 gMonIcon_Porygon2a4[] = INCBIN_U8("graphics/pokemon/porygon2a4/icon.4bpp"); + + const u32 gMonFrontPic_Omapal[] = INCBIN_U32("graphics/pokemon/omapal/front.4bpp.smol"); + const u32 gMonBackPic_Omapal[] = INCBIN_U32("graphics/pokemon/omapal/back.4bpp.smol"); + const u16 gMonPalette_Omapal[] = INCBIN_U16("graphics/pokemon/omapal/front.gbapal"); + const u16 gMonShinyPalette_Omapal[] = INCBIN_U16("graphics/pokemon/omapal/back.gbapal"); + const u8 gMonIcon_Omapal[] = INCBIN_U8("graphics/pokemon/omapal/icon.4bpp"); + + const u32 gMonFrontPic_Omagus[] = INCBIN_U32("graphics/pokemon/omagus/front.4bpp.smol"); + const u32 gMonBackPic_Omagus[] = INCBIN_U32("graphics/pokemon/omagus/back.4bpp.smol"); + const u16 gMonPalette_Omagus[] = INCBIN_U16("graphics/pokemon/omagus/front.gbapal"); + const u16 gMonShinyPalette_Omagus[] = INCBIN_U16("graphics/pokemon/omagus/back.gbapal"); + const u8 gMonIcon_Omagus[] = INCBIN_U8("graphics/pokemon/omagus/icon.4bpp"); + + const u32 gMonFrontPic_Kabutak[] = INCBIN_U32("graphics/pokemon/kabutak/front.4bpp.smol"); + const u32 gMonBackPic_Kabutak[] = INCBIN_U32("graphics/pokemon/kabutak/back.4bpp.smol"); + const u16 gMonPalette_Kabutak[] = INCBIN_U16("graphics/pokemon/kabutak/front.gbapal"); + const u16 gMonShinyPalette_Kabutak[] = INCBIN_U16("graphics/pokemon/kabutak/back.gbapal"); + const u8 gMonIcon_Kabutak[] = INCBIN_U8("graphics/pokemon/kabutak/icon.4bpp"); + + const u32 gMonFrontPic_Kabustion[] = INCBIN_U32("graphics/pokemon/kabustion/front.4bpp.smol"); + const u32 gMonBackPic_Kabustion[] = INCBIN_U32("graphics/pokemon/kabustion/back.4bpp.smol"); + const u16 gMonPalette_Kabustion[] = INCBIN_U16("graphics/pokemon/kabustion/front.gbapal"); + const u16 gMonShinyPalette_Kabustion[] = INCBIN_U16("graphics/pokemon/kabustion/back.gbapal"); + const u8 gMonIcon_Kabustion[] = INCBIN_U8("graphics/pokemon/kabustion/icon.4bpp"); + + const u32 gMonFrontPic_Mandiluft[] = INCBIN_U32("graphics/pokemon/mandiluft/front.4bpp.smol"); + const u32 gMonBackPic_Mandiluft[] = INCBIN_U32("graphics/pokemon/mandiluft/back.4bpp.smol"); + const u16 gMonPalette_Mandiluft[] = INCBIN_U16("graphics/pokemon/mandiluft/front.gbapal"); + const u16 gMonShinyPalette_Mandiluft[] = INCBIN_U16("graphics/pokemon/mandiluft/back.gbapal"); + const u8 gMonIcon_Mandiluft[] = INCBIN_U8("graphics/pokemon/mandiluft/icon.4bpp"); + + const u32 gMonFrontPic_Ambalithic[] = INCBIN_U32("graphics/pokemon/ambalithic/front.4bpp.smol"); + const u32 gMonBackPic_Ambalithic[] = INCBIN_U32("graphics/pokemon/ambalithic/back.4bpp.smol"); + const u16 gMonPalette_Ambalithic[] = INCBIN_U16("graphics/pokemon/ambalithic/front.gbapal"); + const u16 gMonShinyPalette_Ambalithic[] = INCBIN_U16("graphics/pokemon/ambalithic/back.gbapal"); + const u8 gMonIcon_Ambalithic[] = INCBIN_U8("graphics/pokemon/ambalithic/icon.4bpp"); + + const u32 gMonFrontPic_Actlax[] = INCBIN_U32("graphics/pokemon/actlax/front.4bpp.smol"); + const u32 gMonBackPic_Actlax[] = INCBIN_U32("graphics/pokemon/actlax/back.4bpp.smol"); + const u16 gMonPalette_Actlax[] = INCBIN_U16("graphics/pokemon/actlax/front.gbapal"); + const u16 gMonShinyPalette_Actlax[] = INCBIN_U16("graphics/pokemon/actlax/back.gbapal"); + const u8 gMonIcon_Actlax[] = INCBIN_U8("graphics/pokemon/actlax/icon.4bpp"); + + const u32 gMonFrontPic_Grizzlax[] = INCBIN_U32("graphics/pokemon/grizzlax/front.4bpp.smol"); + const u32 gMonBackPic_Grizzlax[] = INCBIN_U32("graphics/pokemon/grizzlax/back.4bpp.smol"); + const u16 gMonPalette_Grizzlax[] = INCBIN_U16("graphics/pokemon/grizzlax/front.gbapal"); + const u16 gMonShinyPalette_Grizzlax[] = INCBIN_U16("graphics/pokemon/grizzlax/back.gbapal"); + const u8 gMonIcon_Grizzlax[] = INCBIN_U8("graphics/pokemon/grizzlax/icon.4bpp"); + + const u32 gMonFrontPic_Snowone[] = INCBIN_U32("graphics/pokemon/snowone/front.4bpp.smol"); + const u32 gMonBackPic_Snowone[] = INCBIN_U32("graphics/pokemon/snowone/back.4bpp.smol"); + const u16 gMonPalette_Snowone[] = INCBIN_U16("graphics/pokemon/snowone/front.gbapal"); + const u16 gMonShinyPalette_Snowone[] = INCBIN_U16("graphics/pokemon/snowone/back.gbapal"); + const u8 gMonIcon_Snowone[] = INCBIN_U8("graphics/pokemon/snowone/icon.4bpp"); + + const u32 gMonFrontPic_Frostunus[] = INCBIN_U32("graphics/pokemon/frostunus/front.4bpp.smol"); + const u32 gMonBackPic_Frostunus[] = INCBIN_U32("graphics/pokemon/frostunus/back.4bpp.smol"); + const u16 gMonPalette_Frostunus[] = INCBIN_U16("graphics/pokemon/frostunus/front.gbapal"); + const u16 gMonShinyPalette_Frostunus[] = INCBIN_U16("graphics/pokemon/frostunus/back.gbapal"); + const u8 gMonIcon_Frostunus[] = INCBIN_U8("graphics/pokemon/frostunus/icon.4bpp"); + + const u32 gMonFrontPic_Shockatoo[] = INCBIN_U32("graphics/pokemon/shockatoo/front.4bpp.smol"); + const u32 gMonBackPic_Shockatoo[] = INCBIN_U32("graphics/pokemon/shockatoo/back.4bpp.smol"); + const u16 gMonPalette_Shockatoo[] = INCBIN_U16("graphics/pokemon/shockatoo/front.gbapal"); + const u16 gMonShinyPalette_Shockatoo[] = INCBIN_U16("graphics/pokemon/shockatoo/back.gbapal"); + const u8 gMonIcon_Shockatoo[] = INCBIN_U8("graphics/pokemon/shockatoo/icon.4bpp"); + + const u32 gMonFrontPic_Voltduo[] = INCBIN_U32("graphics/pokemon/voltduo/front.4bpp.smol"); + const u32 gMonBackPic_Voltduo[] = INCBIN_U32("graphics/pokemon/voltduo/back.4bpp.smol"); + const u16 gMonPalette_Voltduo[] = INCBIN_U16("graphics/pokemon/voltduo/front.gbapal"); + const u16 gMonShinyPalette_Voltduo[] = INCBIN_U16("graphics/pokemon/voltduo/back.gbapal"); + const u8 gMonIcon_Voltduo[] = INCBIN_U8("graphics/pokemon/voltduo/icon.4bpp"); + + const u32 gMonFrontPic_Ignithree[] = INCBIN_U32("graphics/pokemon/ignithree/front.4bpp.smol"); + const u32 gMonBackPic_Ignithree[] = INCBIN_U32("graphics/pokemon/ignithree/back.4bpp.smol"); + const u16 gMonPalette_Ignithree[] = INCBIN_U16("graphics/pokemon/ignithree/front.gbapal"); + const u16 gMonShinyPalette_Ignithree[] = INCBIN_U16("graphics/pokemon/ignithree/back.gbapal"); + const u8 gMonIcon_Ignithree[] = INCBIN_U8("graphics/pokemon/ignithree/icon.4bpp"); + + const u32 gMonFrontPic_Inferntri[] = INCBIN_U32("graphics/pokemon/inferntri/front.4bpp.smol"); + const u32 gMonBackPic_Inferntri[] = INCBIN_U32("graphics/pokemon/inferntri/back.4bpp.smol"); + const u16 gMonPalette_Inferntri[] = INCBIN_U16("graphics/pokemon/inferntri/front.gbapal"); + const u16 gMonShinyPalette_Inferntri[] = INCBIN_U16("graphics/pokemon/inferntri/back.gbapal"); + const u8 gMonIcon_Inferntri[] = INCBIN_U8("graphics/pokemon/inferntri/icon.4bpp"); + + const u32 gMonFrontPic_Dragonier[] = INCBIN_U32("graphics/pokemon/dragonier/front.4bpp.smol"); + const u32 gMonBackPic_Dragonier[] = INCBIN_U32("graphics/pokemon/dragonier/back.4bpp.smol"); + const u16 gMonPalette_Dragonier[] = INCBIN_U16("graphics/pokemon/dragonier/front.gbapal"); + const u16 gMonShinyPalette_Dragonier[] = INCBIN_U16("graphics/pokemon/dragonier/back.gbapal"); + const u8 gMonIcon_Dragonier[] = INCBIN_U8("graphics/pokemon/dragonier/icon.4bpp"); + + const u32 gMonFrontPic_Dragonace[] = INCBIN_U32("graphics/pokemon/dragonace/front.4bpp.smol"); + const u32 gMonBackPic_Dragonace[] = INCBIN_U32("graphics/pokemon/dragonace/back.4bpp.smol"); + const u16 gMonPalette_Dragonace[] = INCBIN_U16("graphics/pokemon/dragonace/front.gbapal"); + const u16 gMonShinyPalette_Dragonace[] = INCBIN_U16("graphics/pokemon/dragonace/back.gbapal"); + const u8 gMonIcon_Dragonace[] = INCBIN_U8("graphics/pokemon/dragonace/icon.4bpp"); + + const u32 gMonFrontPic_Dragontale[] = INCBIN_U32("graphics/pokemon/dragontale/front.4bpp.smol"); + const u32 gMonBackPic_Dragontale[] = INCBIN_U32("graphics/pokemon/dragontale/back.4bpp.smol"); + const u16 gMonPalette_Dragontale[] = INCBIN_U16("graphics/pokemon/dragontale/front.gbapal"); + const u16 gMonShinyPalette_Dragontale[] = INCBIN_U16("graphics/pokemon/dragontale/back.gbapal"); + const u8 gMonIcon_Dragontale[] = INCBIN_U8("graphics/pokemon/dragontale/icon.4bpp"); + + const u32 gMonFrontPic_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/front.4bpp.smol"); + const u32 gMonBackPic_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/back.4bpp.smol"); + const u16 gMonPalette_Mewthree[] = INCBIN_U16("graphics/pokemon/mewthree/front.gbapal"); + const u16 gMonShinyPalette_Mewthree[] = INCBIN_U16("graphics/pokemon/mewthree/back.gbapal"); + const u8 gMonIcon_Mewthree[] = INCBIN_U8("graphics/pokemon/mewthree/icon.4bpp"); + + const u32 gMonFrontPic_Mewfour[] = INCBIN_U32("graphics/pokemon/mewfour/front.4bpp.smol"); + const u32 gMonBackPic_Mewfour[] = INCBIN_U32("graphics/pokemon/mewfour/back.4bpp.smol"); + const u16 gMonPalette_Mewfour[] = INCBIN_U16("graphics/pokemon/mewfour/front.gbapal"); + const u16 gMonShinyPalette_Mewfour[] = INCBIN_U16("graphics/pokemon/mewfour/back.gbapal"); + const u8 gMonIcon_Mewfour[] = INCBIN_U8("graphics/pokemon/mewfour/icon.4bpp"); + + const u32 gMonFrontPic_Nyu[] = INCBIN_U32("graphics/pokemon/nyu/front.4bpp.smol"); + const u32 gMonBackPic_Nyu[] = INCBIN_U32("graphics/pokemon/nyu/back.4bpp.smol"); + const u16 gMonPalette_Nyu[] = INCBIN_U16("graphics/pokemon/nyu/front.gbapal"); + const u16 gMonShinyPalette_Nyu[] = INCBIN_U16("graphics/pokemon/nyu/back.gbapal"); + const u8 gMonIcon_Nyu[] = INCBIN_U8("graphics/pokemon/nyu/icon.4bpp"); + + const u32 gMonFrontPic_Iota[] = INCBIN_U32("graphics/pokemon/iota/front.4bpp.smol"); + const u32 gMonBackPic_Iota[] = INCBIN_U32("graphics/pokemon/iota/back.4bpp.smol"); + const u16 gMonPalette_Iota[] = INCBIN_U16("graphics/pokemon/iota/front.gbapal"); + const u16 gMonShinyPalette_Iota[] = INCBIN_U16("graphics/pokemon/iota/back.gbapal"); + const u8 gMonIcon_Iota[] = INCBIN_U8("graphics/pokemon/iota/icon.4bpp"); + + const u32 gMonFrontPic_Missingno1[] = INCBIN_U32("graphics/pokemon/missingno1/front.4bpp.smol"); + const u32 gMonBackPic_Missingno1[] = INCBIN_U32("graphics/pokemon/missingno1/back.4bpp.smol"); + const u16 gMonPalette_Missingno1[] = INCBIN_U16("graphics/pokemon/missingno1/front.gbapal"); + const u16 gMonShinyPalette_Missingno1[] = INCBIN_U16("graphics/pokemon/missingno1/back.gbapal"); + const u8 gMonIcon_Missingno1[] = INCBIN_U8("graphics/pokemon/missingno1/icon.4bpp"); + + const u32 gMonFrontPic_Missingno2[] = INCBIN_U32("graphics/pokemon/missingno2/front.4bpp.smol"); + const u32 gMonBackPic_Missingno2[] = INCBIN_U32("graphics/pokemon/missingno2/back.4bpp.smol"); + const u16 gMonPalette_Missingno2[] = INCBIN_U16("graphics/pokemon/missingno2/front.gbapal"); + const u16 gMonShinyPalette_Missingno2[] = INCBIN_U16("graphics/pokemon/missingno2/back.gbapal"); + const u8 gMonIcon_Missingno2[] = INCBIN_U8("graphics/pokemon/missingno2/icon.4bpp"); + + const u32 gMonFrontPic_Missingno3[] = INCBIN_U32("graphics/pokemon/missingno3/front.4bpp.smol"); + const u32 gMonBackPic_Missingno3[] = INCBIN_U32("graphics/pokemon/missingno3/back.4bpp.smol"); + const u16 gMonPalette_Missingno3[] = INCBIN_U16("graphics/pokemon/missingno3/front.gbapal"); + const u16 gMonShinyPalette_Missingno3[] = INCBIN_U16("graphics/pokemon/missingno3/back.gbapal"); + const u8 gMonIcon_Missingno3[] = INCBIN_U8("graphics/pokemon/missingno3/icon.4bpp"); + + const u32 gMonFrontPic_Missingno4[] = INCBIN_U32("graphics/pokemon/missingno4/front.4bpp.smol"); + const u32 gMonBackPic_Missingno4[] = INCBIN_U32("graphics/pokemon/missingno4/back.4bpp.smol"); + const u16 gMonPalette_Missingno4[] = INCBIN_U16("graphics/pokemon/missingno4/front.gbapal"); + const u16 gMonShinyPalette_Missingno4[] = INCBIN_U16("graphics/pokemon/missingno4/back.gbapal"); + const u8 gMonIcon_Missingno4[] = INCBIN_U8("graphics/pokemon/missingno4/icon.4bpp"); + + const u32 gMonFrontPic_Missingno5[] = INCBIN_U32("graphics/pokemon/missingno5/front.4bpp.smol"); + const u32 gMonBackPic_Missingno5[] = INCBIN_U32("graphics/pokemon/missingno5/back.4bpp.smol"); + const u16 gMonPalette_Missingno5[] = INCBIN_U16("graphics/pokemon/missingno5/front.gbapal"); + const u16 gMonShinyPalette_Missingno5[] = INCBIN_U16("graphics/pokemon/missingno5/back.gbapal"); + const u8 gMonIcon_Missingno5[] = INCBIN_U8("graphics/pokemon/missingno5/icon.4bpp"); + + const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.smol"); + const u16 gMonPalette_Egg[] = INCBIN_U16("graphics/pokemon/egg/normal.gbapal"); + const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); diff --git a/pokeemerald-tools/species.h b/pokeemerald-tools/species.h new file mode 100644 index 0000000000..00427438d1 --- /dev/null +++ b/pokeemerald-tools/species.h @@ -0,0 +1,365 @@ +//Species File Update +#ifndef GUARD_CONSTANTS_SPECIES_H +#define GUARD_CONSTANTS_SPECIES_H + +#define SPECIES_NONE 0 +#define SPECIES_BULBASAUR 1 +#define SPECIES_IVYSAUR 2 +#define SPECIES_VENUSAUR 3 +#define SPECIES_ECOSAUR 4 +#define SPECIES_TERARISAUR 5 +#define SPECIES_SYMBISAUR 6 +#define SPECIES_CHARMANDER 7 +#define SPECIES_CHARMELEON 8 +#define SPECIES_CHARIZARD 9 +#define SPECIES_CHARIGUANA 10 +#define SPECIES_CHARIANA 11 +#define SPECIES_CHARIATHAN 12 +#define SPECIES_SQUIRTLE 13 +#define SPECIES_WARTORTLE 14 +#define SPECIES_BLASTOISE 15 +#define SPECIES_FERRAPIN 16 +#define SPECIES_FORTOISE 17 +#define SPECIES_TURTILLERY 18 +#define SPECIES_CATERPIE 19 +#define SPECIES_METAPOD 20 +#define SPECIES_BUTTERFREE 21 +#define SPECIES_BUTTEFLARE 22 +#define SPECIES_PYREFREE 23 +#define SPECIES_IMPSECT 24 +#define SPECIES_WEEDLE 25 +#define SPECIES_KAKUNA 26 +#define SPECIES_BEEDRILL 27 +#define SPECIES_BEEBRUTE 28 +#define SPECIES_DRONARCH 29 +#define SPECIES_SEPISTRIKE 30 +#define SPECIES_PIDGEY 31 +#define SPECIES_PIDGEOTTO 32 +#define SPECIES_PIDGEOT 33 +#define SPECIES_PIDGAERO 34 +#define SPECIES_PIDGEOZONE 35 +#define SPECIES_PIDGEPHYR 36 +#define SPECIES_RATTATA 37 +#define SPECIES_RATICATE 38 +#define SPECIES_RATTCHET 39 +#define SPECIES_RATTARULE 40 +#define SPECIES_SPEAROW 41 +#define SPECIES_FEAROW 42 +#define SPECIES_SNEEROW 43 +#define SPECIES_ORNITHOW 44 +#define SPECIES_EKANS 45 +#define SPECIES_ARBOK 46 +#define SPECIES_NOHTYP 47 +#define SPECIES_ADNOKANA 48 +#define SPECIES_PIKACHU 49 +#define SPECIES_RAICHU 50 +#define SPECIES_GOROCHU 51 +#define SPECIES_STROMACHU 52 +#define SPECIES_SANDSHREW 53 +#define SPECIES_SANDSLASH 54 +#define SPECIES_SANDSLAM 55 +#define SPECIES_FERODILLO 56 +#define SPECIES_NIDORAN_F 57 +#define SPECIES_NIDORINA 58 +#define SPECIES_NIDOQUEEN 59 +#define SPECIES_NIDOREGAL 60 +#define SPECIES_NIDOARCHY 61 +#define SPECIES_NIDORAN_M 62 +#define SPECIES_NIDORINO 63 +#define SPECIES_NIDOKING 64 +#define SPECIES_NIDORULY 65 +#define SPECIES_NIDOMINATE 66 +#define SPECIES_CLEFAIRY 67 +#define SPECIES_CLEFABLE 68 +#define SPECIES_CLEFAEFAE 69 +#define SPECIES_CLEFANAUT 70 +#define SPECIES_VULPIX 71 +#define SPECIES_NINETALES 72 +#define SPECIES_SPIRITALES 73 +#define SPECIES_YOKAYUBI 74 +#define SPECIES_JIGGLYPUFF 75 +#define SPECIES_WIGGLYTUFF 76 +#define SPECIES_GIGGLYHUFF 77 +#define SPECIES_BOGGLYFUFF 78 +#define SPECIES_ZUBAT 79 +#define SPECIES_GOLBAT 80 +#define SPECIES_CROBAT 81 +#define SPECIES_POLABAT 82 +#define SPECIES_VISIBAT 83 +#define SPECIES_HORRIBAT 84 +#define SPECIES_ODDISH 85 +#define SPECIES_GLOOM 86 +#define SPECIES_VILEPLUME 87 +#define SPECIES_RAFFLURK 88 +#define SPECIES_CONCORPSIA 89 +#define SPECIES_PARAS 90 +#define SPECIES_PARASECT 91 +#define SPECIES_SECTASITE 92 +#define SPECIES_FUNGALITH 93 +#define SPECIES_VENONAT 94 +#define SPECIES_VENOMOTH 95 +#define SPECIES_VENOMENA 96 +#define SPECIES_VENOMENON 97 +#define SPECIES_DIGLETT 98 +#define SPECIES_DUGTRIO 99 +#define SPECIES_DUGROUPLE 100 +#define SPECIES_UNEARTHLET 101 +#define SPECIES_DIGLENOID 102 +#define SPECIES_MEOWTH 103 +#define SPECIES_PERSIAN 104 +#define SPECIES_FELANKH 105 +#define SPECIES_PATRAPHINX 106 +#define SPECIES_PSYDUCK 107 +#define SPECIES_GOLDUCK 108 +#define SPECIES_GILDUCK 109 +#define SPECIES_PLATINUPUS 110 +#define SPECIES_MANKEY 111 +#define SPECIES_PRIMEAPE 112 +#define SPECIES_GORILLASH 113 +#define SPECIES_BONUMBELL 114 +#define SPECIES_GROWLITHE 115 +#define SPECIES_ARCANINE 116 +#define SPECIES_SINGESHA 117 +#define SPECIES_GUARDIANCE 118 +#define SPECIES_POLIWAG 119 +#define SPECIES_POLIWHIRL 120 +#define SPECIES_POLIWRATH 121 +#define SPECIES_POLITOES 122 +#define SPECIES_POLIWISE 123 +#define SPECIES_POLIATH 124 +#define SPECIES_ABRA 125 +#define SPECIES_KADABRA 126 +#define SPECIES_ALAKAZAM 127 +#define SPECIES_SIMSALABIM 128 +#define SPECIES_VOHOODU 129 +#define SPECIES_TZARKARTZ 130 +#define SPECIES_MACHOP 131 +#define SPECIES_MACHOKE 132 +#define SPECIES_MACHAMP 133 +#define SPECIES_MACHULK 134 +#define SPECIES_ABOMACHULK 135 +#define SPECIES_MACHITAN 136 +#define SPECIES_BELLSPROUT 137 +#define SPECIES_WEEPINBELL 138 +#define SPECIES_VICTREEBEL 139 +#define SPECIES_MUCKTRIBEL 140 +#define SPECIES_CARNABELL 141 +#define SPECIES_DEVLORA 142 +#define SPECIES_TENTACOOL 143 +#define SPECIES_TENTACRUEL 144 +#define SPECIES_TENTACATE 145 +#define SPECIES_TENTABOMA 146 +#define SPECIES_GEODUDE 147 +#define SPECIES_GRAVELER 148 +#define SPECIES_GOLEM 149 +#define SPECIES_SLAGOLEM 150 +#define SPECIES_MOLTREM 151 +#define SPECIES_VOLCANICOL 152 +#define SPECIES_PONYTA 153 +#define SPECIES_RAPIDASH 154 +#define SPECIES_COMBUSTANG 155 +#define SPECIES_KNIGHTMARE 156 +#define SPECIES_SLOWPOKE 157 +#define SPECIES_SLOWBRO 158 +#define SPECIES_SLOWMATE 159 +#define SPECIES_SLOWCHUM 160 +#define SPECIES_MAGNEMITE 161 +#define SPECIES_MAGNETON 162 +#define SPECIES_MAGNEZONE 163 +#define SPECIES_MAGNEMELD 164 +#define SPECIES_MAGNEMASTR 165 +#define SPECIES_FARFETCHD 166 +#define SPECIES_FORFOWLD 167 +#define SPECIES_FOWLNTOM 168 +#define SPECIES_DODUO 169 +#define SPECIES_DODRIO 170 +#define SPECIES_QUADODO 171 +#define SPECIES_DODOZEN 172 +#define SPECIES_SEEL 173 +#define SPECIES_DEWGONG 174 +#define SPECIES_PRECIPED 175 +#define SPECIES_MANATII 176 +#define SPECIES_GRIMER 177 +#define SPECIES_MUK 178 +#define SPECIES_GUNK 179 +#define SPECIES_SKUM 180 +#define SPECIES_SHELLDER 181 +#define SPECIES_CLOYSTER 182 +#define SPECIES_ANENEMY 183 +#define SPECIES_GLAISHELL 184 +#define SPECIES_GASTLY 185 +#define SPECIES_HAUNTER 186 +#define SPECIES_GENGAR 187 +#define SPECIES_GENGONE 188 +#define SPECIES_POLTERGAST 189 +#define SPECIES_GRIMM 190 +#define SPECIES_ONIX 191 +#define SPECIES_STEELIX 192 +#define SPECIES_PLATNIX 193 +#define SPECIES_OBSIDIANIX 194 +#define SPECIES_STALAGMIX 195 +#define SPECIES_DROWZEE 196 +#define SPECIES_HYPNO 197 +#define SPECIES_LULLOO 198 +#define SPECIES_SOMNISOOTH 199 +#define SPECIES_KRABBY 200 +#define SPECIES_KINGLER 201 +#define SPECIES_KRAKLAW 202 +#define SPECIES_TEKLAWNO 203 +#define SPECIES_VOLTORB 204 +#define SPECIES_ELECTRODE 205 +#define SPECIES_ELECTRODES 206 +#define SPECIES_ELECTRODEX 207 +#define SPECIES_ELECTRODEM 208 +#define SPECIES_EXEGGCUTE 209 +#define SPECIES_EXEGGUTOR 210 +#define SPECIES_EXEGGITY 211 +#define SPECIES_EXEGGTRIC 212 +#define SPECIES_CUBONE 213 +#define SPECIES_MAROWAK 214 +#define SPECIES_OSSELOBBER 215 +#define SPECIES_WRAIWRATH 216 +#define SPECIES_HITMONLEE 217 +#define SPECIES_CLEEVOYANT 218 +#define SPECIES_SPIRITULEE 219 +#define SPECIES_HITMONCHAN 220 +#define SPECIES_ENCHANCED 221 +#define SPECIES_RADIACHAN 222 +#define SPECIES_LICKITUNG 223 +#define SPECIES_LICKILICKY 224 +#define SPECIES_LICKILOLLY 225 +#define SPECIES_LICKILATO 226 +#define SPECIES_KOFFING 227 +#define SPECIES_WEEZING 228 +#define SPECIES_HEEVING 229 +#define SPECIES_CHOHKING 230 +#define SPECIES_RHYHORN 231 +#define SPECIES_RHYDON 232 +#define SPECIES_RHYPERIOR 233 +#define SPECIES_RHYMARKABL 234 +#define SPECIES_RHYLIC 235 +#define SPECIES_RHYBORN 236 +#define SPECIES_CHANSEY 237 +#define SPECIES_BLISSEY 238 +#define SPECIES_GOGETTEY 239 +#define SPECIES_LUKKEY 240 +#define SPECIES_FORTUNITEY 241 +#define SPECIES_TANGELA 242 +#define SPECIES_TANGROWTH 243 +#define SPECIES_TANGATHER 244 +#define SPECIES_TANGOLIATH 245 +#define SPECIES_TANGRAPPLE 246 +#define SPECIES_KANGAKID 247 +#define SPECIES_KANGASKHAN 248 +#define SPECIES_KANGALLOUS 249 +#define SPECIES_KANGARUTAL 250 +#define SPECIES_HORSEA 251 +#define SPECIES_SEADRA 252 +#define SPECIES_KINGDRA 253 +#define SPECIES_LORDRA 254 +#define SPECIES_PINNADRA 255 +#define SPECIES_GOLDEEN 256 +#define SPECIES_SEAKING 257 +#define SPECIES_SEAREX 258 +#define SPECIES_CAPRISEA 259 +#define SPECIES_STARYU 260 +#define SPECIES_STARMIE 261 +#define SPECIES_STARUS 262 +#define SPECIES_STARWE 263 +#define SPECIES_MR_MIME 264 +#define SPECIES_MR_JEST 265 +#define SPECIES_MR_FOOL 266 +#define SPECIES_SCYTHER 267 +#define SPECIES_SCIZOR 268 +#define SPECIES_RAZER 269 +#define SPECIES_CLAYMOR 270 +#define SPECIES_JYNX 271 +#define SPECIES_JYNKIES 272 +#define SPECIES_JEEPERS 273 +#define SPECIES_ELECTABUZZ 274 +#define SPECIES_ELECTIVIRE 275 +#define SPECIES_ELECTIVINE 276 +#define SPECIES_ELECTIWIZZ 277 +#define SPECIES_MAGMAR 278 +#define SPECIES_MAGMORTAR 279 +#define SPECIES_MAGMORE 280 +#define SPECIES_MAGMOLTEN 281 +#define SPECIES_PINSIR 282 +#define SPECIES_PINSIRIOR 283 +#define SPECIES_ABYSSIR 284 +#define SPECIES_TAUROS 285 +#define SPECIES_TAUROX 286 +#define SPECIES_OXENFREE 287 +#define SPECIES_MAGIKARP 288 +#define SPECIES_GYARADOS 289 +#define SPECIES_HYDRADOS 290 +#define SPECIES_DRACOSMIC 291 +#define SPECIES_QUAZAR 292 +#define SPECIES_LAPRAS 293 +#define SPECIES_LOCHLASS 294 +#define SPECIES_NESSEA 295 +#define SPECIES_DITTO 296 +#define SPECIES_MORPHO 297 +#define SPECIES_METAMORPHO 298 +#define SPECIES_EEVEE 299 +#define SPECIES_VAPOREON 300 +#define SPECIES_RIVEON 301 +#define SPECIES_BRINEON 302 +#define SPECIES_JOLTEON 303 +#define SPECIES_PLASMEON 304 +#define SPECIES_GALVEON 305 +#define SPECIES_FLAREON 306 +#define SPECIES_SMOLDEON 307 +#define SPECIES_INFERNEON 308 +#define SPECIES_PORYGON 309 +#define SPECIES_PORYGON2 310 +#define SPECIES_PORYGONZ 311 +#define SPECIES_PORYGONX 312 +#define SPECIES_PORYGONQ 313 +#define SPECIES_PORYGON2A4 314 +#define SPECIES_OMANYTE 315 +#define SPECIES_OMASTAR 316 +#define SPECIES_OMAPAL 317 +#define SPECIES_OMAGUS 318 +#define SPECIES_KABUTO 319 +#define SPECIES_KABUTOPS 320 +#define SPECIES_KABUTAK 321 +#define SPECIES_KABUSTION 322 +#define SPECIES_AERODACTYL 323 +#define SPECIES_MANDILUFT 324 +#define SPECIES_AMBALITHIC 325 +#define SPECIES_SNORLAX 326 +#define SPECIES_ACTLAX 327 +#define SPECIES_GRIZZLAX 328 +#define SPECIES_ARTICUNO 329 +#define SPECIES_SNOWONE 330 +#define SPECIES_FROSTUNUS 331 +#define SPECIES_ZAPDOS 332 +#define SPECIES_SHOCKATOO 333 +#define SPECIES_VOLTDUO 334 +#define SPECIES_MOLTRES 335 +#define SPECIES_IGNITHREE 336 +#define SPECIES_INFERNTRI 337 +#define SPECIES_DRATINI 338 +#define SPECIES_DRAGONAIR 339 +#define SPECIES_DRAGONITE 340 +#define SPECIES_DRAGONIER 341 +#define SPECIES_DRAGONACE 342 +#define SPECIES_DRAGONTALE 343 +#define SPECIES_MEWTWO 344 +#define SPECIES_MEWTHREE 345 +#define SPECIES_MEWFOUR 346 +#define SPECIES_MEW 347 +#define SPECIES_NYU 348 +#define SPECIES_IOTA 349 +#define SPECIES_MISSINGNO1 350 +#define SPECIES_MISSINGNO2 351 +#define SPECIES_MISSINGNO3 352 +#define SPECIES_MISSINGNO4 353 +#define SPECIES_MISSINGNO5 354 + +#define SPECIES_EGG (MISSINGNO5 + 1) +#define NUM_SPECIES SPECIES_EGG +#define SPECIES_SHINY_TAG 5000 +#endif // GUARD_CONSTANTS_SPECIES_H +//end of program \ No newline at end of file diff --git a/pokeemerald-tools/teachable_learnsets.h b/pokeemerald-tools/teachable_learnsets.h new file mode 100644 index 0000000000..c2e280ff6f --- /dev/null +++ b/pokeemerald-tools/teachable_learnsets.h @@ -0,0 +1,12095 @@ +static const u16 sNoneTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +#if P_FAMILY_BULBASAUR +static const u16 sBulbasaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sIvysaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenusaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sEcosaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTerarisaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSymbisaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER +static const u16 sCharmanderTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCharmeleonTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCharizardTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sChariguanaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCharianaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sChariathanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE +static const u16 sSquirtleTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sWartortleTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sBlastoiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sFerrapinTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sFortoiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTurtilleryTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE +static const u16 sCaterpieTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sMetapodTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sButterfreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sButteflareTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPyrefreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sImpsectTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE +static const u16 sWeedleTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sKakunaTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sBeedrillTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBeebruteTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDronarchTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSepistrikeTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY +static const u16 sPidgeyTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgeottoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgeotTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgaeroTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgeozoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPidgephyrTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA +static const u16 sRattataTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRaticateTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRattchetTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRattaruleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW +static const u16 sSpearowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sFearowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sSneerowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sOrnithowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SPEAROW + +#if P_FAMILY_EKANS +static const u16 sEkansTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sArbokTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sNohtypTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sAdnokanaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +static const u16 sPikachuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRaichuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGorochuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sStromachuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW +static const u16 sSandshrewTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSandslashTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSandslamTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFerodilloTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN_F +static const u16 sNidoran_fTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidorinaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidoqueenTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidoregalTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidoarchyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_NIDORAN_F + +#if P_FAMILY_NIDORAN_M +static const u16 sNidoran_mTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidorinoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidokingTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidorulyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sNidominateTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_NIDORAN_M + +#if P_FAMILY_CLEFAIRY +static const u16 sClefairyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClefableTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClefaefaeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClefanautTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX +static const u16 sVulpixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sNinetalesTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sSpiritalesTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sYokayubiTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +static const u16 sJigglypuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWigglytuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGigglyhuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBogglyfuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT +static const u16 sZubatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sGolbatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sCrobatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sPolabatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sVisibatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sHorribatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH +static const u16 sOddishTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGloomTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVileplumeTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRafflurkTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sConcorpsiaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS +static const u16 sParasTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sParasectTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSectasiteTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFungalithTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PARAS + +#if P_FAMILY_VENONAT +static const u16 sVenonatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenomothTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenomenaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVenomenonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VENONAT + +#if P_FAMILY_DIGLETT +static const u16 sDiglettTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDugtrioTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDugroupleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sUnearthletTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDiglenoidTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH +static const u16 sMeowthTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPersianTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFelankhTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPatraphinxTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK +static const u16 sPsyduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sGolduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sGilduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPlatinupusTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PSYDUCK + +#if P_FAMILY_MANKEY +static const u16 sMankeyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPrimeapeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGorillashTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBonumbellTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE +static const u16 sGrowlitheTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sArcanineTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSingeshaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGuardianceTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG +static const u16 sPoliwagTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliwhirlTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliwrathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPolitoesTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliwiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPoliathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA +static const u16 sAbraTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKadabraTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAlakazamTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSimsalabimTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVohooduTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTzarkartzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP +static const u16 sMachopTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachokeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachampTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachulkTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAbomachulkTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMachitanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT +static const u16 sBellsproutTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWeepinbellTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVictreebelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMucktribelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCarnabellTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sDevloraTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_BELLSPROUT + +#if P_FAMILY_TENTACOOL +static const u16 sTentacoolTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTentacruelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTentacateTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTentabomaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TENTACOOL + +#if P_FAMILY_GEODUDE +static const u16 sGeodudeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGravelerTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGolemTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSlagolemTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMoltremTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVolcanicolTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA +static const u16 sPonytaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sRapidashTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sCombustangTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sKnightmareTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE +static const u16 sSlowpokeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSlowbroTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSlowmateTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSlowchumTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE +static const u16 sMagnemiteTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnetonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnezoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnemeldTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagnemastrTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD +static const u16 sFarfetchdTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sForfowldTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sFowlntomTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO +static const u16 sDoduoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sDodrioTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sQuadodoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +static const u16 sDodozenTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DODUO + +#if P_FAMILY_SEEL +static const u16 sSeelTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDewgongTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPrecipedTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sManatiiTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SEEL + +#if P_FAMILY_GRIMER +static const u16 sGrimerTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; +static const u16 sMukTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGunkTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSkumTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER +static const u16 sShellderTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sCloysterTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sAnenemyTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sGlaishellTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SHELLDER + +#if P_FAMILY_GASTLY +static const u16 sGastlyTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sHaunterTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; +static const u16 sGengarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGengoneTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPoltergastTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGrimmTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX +static const u16 sOnixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSteelixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPlatnixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sObsidianixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sStalagmixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE +static const u16 sDrowzeeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sHypnoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLullooTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSomnisoothTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DROWZEE + +#if P_FAMILY_KRABBY +static const u16 sKrabbyTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKinglerTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKraklawTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sTeklawnoTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB +static const u16 sVoltorbTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodeTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodesTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodexTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectrodemTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE +static const u16 sExeggcuteTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sExeggutorTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sExeggityTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sExeggtricTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE +static const u16 sCuboneTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMarowakTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sOsselobberTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWraiwrathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONLEE +static const u16 sHitmonleeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sCleevoyantTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSpirituleeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_HITMONLEE + +#if P_FAMILY_HITMONCHAN +static const u16 sHitmonchanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sEnchancedTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRadiachanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_HITMONCHAN + +#if P_FAMILY_LICKITUNG +static const u16 sLickitungTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLickilickyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLickilollyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLickilatoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING +static const u16 sKoffingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sWeezingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sHeevingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sChohkingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN +static const u16 sRhyhornTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhydonTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhyperiorTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhymarkablTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhylicTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRhybornTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +static const u16 sChanseyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sBlisseyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGogetteyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sLukkeyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFortuniteyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA +static const u16 sTangelaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangrowthTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangatherTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangoliathTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTangrappleTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGAKID +static const u16 sKangakidTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKangaskhanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKangallousTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sKangarutalTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KANGAKID + +#if P_FAMILY_HORSEA +static const u16 sHorseaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSeadraTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKingdraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sLordraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sPinnadraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN +static const u16 sGoldeenTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSeakingTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sSearexTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sCapriseaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GOLDEEN + +#if P_FAMILY_STARYU +static const u16 sStaryuTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sStarmieTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sStarusTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sStarweTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +static const u16 sMr_mimeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMr_jestTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMr_foolTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER +static const u16 sScytherTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sScizorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sRazerTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sClaymorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +static const u16 sJynxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sJynkiesTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sJeepersTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +static const u16 sElectabuzzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectivireTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectivineTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sElectiwizzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +static const u16 sMagmarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagmortarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagmoreTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMagmoltenTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR +static const u16 sPinsirTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPinsiriorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAbyssirTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PINSIR + +#if P_FAMILY_TAUROS +static const u16 sTaurosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sTauroxTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sOxenfreeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP +static const u16 sMagikarpTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sGyaradosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sHydradosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDracosmicTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sQuazarTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS +static const u16 sLaprasTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sLochlassTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sNesseaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO +static const u16 sDittoTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sMorphoTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +static const u16 sMetamorphoTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DITTO + +#if P_FAMILY_EEVEE +static const u16 sEeveeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_UNAVAILABLE, +}; +static const u16 sVaporeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sRiveonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sBrineonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sJolteonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPlasmeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sGalveonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFlareonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sSmoldeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +static const u16 sInferneonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON +static const u16 sPorygonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygon2TeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygonzTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygonxTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygonqTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_OVERHEAT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +static const u16 sPorygon2a4TeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_OVERHEAT, + MOVE_FLASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE +static const u16 sOmanyteTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sOmastarTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sOmapalTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sOmagusTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_OMANYTE + +#if P_FAMILY_KABUTO +static const u16 sKabutoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sKabutopsTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKabutakTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sKabustionTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KABUTO + +#if P_FAMILY_AERODACTYL +static const u16 sAerodactylTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMandiluftTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sAmbalithicTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +static const u16 sSnorlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sActlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +static const u16 sGrizzlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO +static const u16 sArticunoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sSnowoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sFrostunusTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS +static const u16 sZapdosTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sShockatooTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sVoltduoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES +static const u16 sMoltresTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sIgnithreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sInferntriTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI +static const u16 sDratiniTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sDragonairTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; +static const u16 sDragoniteTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDragonierTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDragonaceTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sDragontaleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DRATINI + +#if P_FAMILY_MEWTWO +static const u16 sMewtwoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMewthreeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +static const u16 sMewfourTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW +static const u16 sMewTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sNyuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +static const u16 sIotaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MEW + +#if P_FAMILY_MISSINGNO1 +static const u16 sMissingno1TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO1 + +#if P_FAMILY_MISSINGNO2 +static const u16 sMissingno2TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO2 + +#if P_FAMILY_MISSINGNO3 +static const u16 sMissingno3TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO3 + +#if P_FAMILY_MISSINGNO4 +static const u16 sMissingno4TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MISSINGNO4 + +#if P_FAMILY_MISSINGNO5 +static const u16 sMissingno5TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +};