static const u16 sNoneTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

#if P_FAMILY_BULBASAUR
static const u16 sBulbasaurTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sIvysaurTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sVenusaurTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BULBASAUR

#if P_FAMILY_CHARMANDER
static const u16 sCharmanderTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sCharmeleonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sCharizardTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHARMANDER

#if P_FAMILY_SQUIRTLE
static const u16 sSquirtleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sWartortleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sBlastoiseTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SQUIRTLE

#if P_FAMILY_CATERPIE
static const u16 sCaterpieTeachableLearnset[] = {
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sMetapodTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sButterfreeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    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_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WEEDLE

#if P_FAMILY_PIDGEY
static const u16 sPidgeyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPidgeottoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPidgeotTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PIDGEY

#if P_FAMILY_RATTATA
static const u16 sRattataTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sRaticateTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sRattataAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sRaticateAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_RATTATA

#if P_FAMILY_SPEAROW
static const u16 sSpearowTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFearowTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPEAROW

#if P_FAMILY_EKANS
static const u16 sEkansTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sArbokTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_EKANS

#if P_FAMILY_PIKACHU
#if P_GEN_2_CROSS_EVOS
static const u16 sPichuTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

static const u16 sPikachuTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sRaichuTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sRaichuAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_PIKACHU

#if P_FAMILY_SANDSHREW
static const u16 sSandshrewTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSandslashTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sSandshrewAlolanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSandslashAlolanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_SANDSHREW

#if P_FAMILY_NIDORAN
static const u16 sNidoranFTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sNidorinaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sNidoqueenTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sNidoranMTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sNidorinoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sNidokingTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NIDORAN

#if P_FAMILY_CLEFAIRY
#if P_GEN_2_CROSS_EVOS
static const u16 sCleffaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

static const u16 sClefairyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sClefableTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CLEFAIRY

#if P_FAMILY_VULPIX
static const u16 sVulpixTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sNinetalesTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sVulpixAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sNinetalesAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_VULPIX

#if P_FAMILY_JIGGLYPUFF
#if P_GEN_2_CROSS_EVOS
static const u16 sIgglybuffTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

static const u16 sJigglypuffTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sWigglytuffTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_JIGGLYPUFF

#if P_FAMILY_ZUBAT
static const u16 sZubatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sGolbatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sCrobatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_ZUBAT

#if P_FAMILY_ODDISH
static const u16 sOddishTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sGloomTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sVileplumeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sBellossomTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_ODDISH

#if P_FAMILY_PARAS
static const u16 sParasTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sParasectTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PARAS

#if P_FAMILY_VENONAT
static const u16 sVenonatTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sVenomothTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VENONAT

#if P_FAMILY_DIGLETT
static const u16 sDiglettTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDugtrioTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sDiglettAlolanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDugtrioAlolanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_DIGLETT

#if P_FAMILY_MEOWTH
static const u16 sMeowthTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sPersianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sMeowthAlolanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sPersianAlolanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS

#if P_GALARIAN_FORMS
static const u16 sMeowthGalarianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sPerrserkerTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_MEOWTH

#if P_FAMILY_PSYDUCK
static const u16 sPsyduckTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sGolduckTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PSYDUCK

#if P_FAMILY_MANKEY
static const u16 sMankeyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sPrimeapeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_GEN_9_CROSS_EVOS
static const u16 sAnnihilapeTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_9_CROSS_EVOS
#endif //P_FAMILY_MANKEY

#if P_FAMILY_GROWLITHE
static const u16 sGrowlitheTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sArcanineTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sGrowlitheHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sArcanineHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_GROWLITHE

#if P_FAMILY_POLIWAG
static const u16 sPoliwagTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPoliwhirlTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPoliwrathTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sPolitoedTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_POLIWAG

#if P_FAMILY_ABRA
static const u16 sAbraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sKadabraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sAlakazamTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ABRA

#if P_FAMILY_MACHOP
static const u16 sMachopTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMachokeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMachampTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MACHOP

#if P_FAMILY_BELLSPROUT
static const u16 sBellsproutTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sWeepinbellTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sVictreebelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BELLSPROUT

#if P_FAMILY_TENTACOOL
static const u16 sTentacoolTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sTentacruelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TENTACOOL

#if P_FAMILY_GEODUDE
static const u16 sGeodudeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sGravelerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sGolemTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sGeodudeAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGravelerAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGolemAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_GEODUDE

#if P_FAMILY_PONYTA
static const u16 sPonytaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sRapidashTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sPonytaGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sRapidashGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_PONYTA

#if P_FAMILY_SLOWPOKE
static const u16 sSlowpokeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSlowbroTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sSlowkingTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

#if P_GALARIAN_FORMS
static const u16 sSlowpokeGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSlowbroGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sSlowkingGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_SLOWPOKE

#if P_FAMILY_MAGNEMITE
static const u16 sMagnemiteTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMagnetonTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sMagnezoneTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_MAGNEMITE

#if P_FAMILY_FARFETCHD
static const u16 sFarfetchdTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sFarfetchdGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSirfetchdTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_FARFETCHD

#if P_FAMILY_DODUO
static const u16 sDoduoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDodrioTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DODUO

#if P_FAMILY_SEEL
static const u16 sSeelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sDewgongTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SEEL

#if P_FAMILY_GRIMER
static const u16 sGrimerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMukTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sGrimerAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMukAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_GRIMER

#if P_FAMILY_SHELLDER
static const u16 sShellderTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sCloysterTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHELLDER

#if P_FAMILY_GASTLY
static const u16 sGastlyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sHaunterTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sGengarTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GASTLY

#if P_FAMILY_ONIX
static const u16 sOnixTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sSteelixTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_ONIX

#if P_FAMILY_DROWZEE
static const u16 sDrowzeeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sHypnoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DROWZEE

#if P_FAMILY_KRABBY
static const u16 sKrabbyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sKinglerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KRABBY

#if P_FAMILY_VOLTORB
static const u16 sVoltorbTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sElectrodeTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sVoltorbHisuianTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sElectrodeHisuianTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_VOLTORB

#if P_FAMILY_EXEGGCUTE
static const u16 sExeggcuteTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sExeggutorTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sExeggutorAlolanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_EXEGGCUTE

#if P_FAMILY_CUBONE
static const u16 sCuboneTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMarowakTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_ALOLAN_FORMS
static const u16 sMarowakAlolanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_ALOLAN_FORMS
#endif //P_FAMILY_CUBONE

#if P_FAMILY_HITMONS
#if P_GEN_2_CROSS_EVOS
static const u16 sTyrogueTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

static const u16 sHitmonleeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sHitmonchanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sHitmontopTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_HITMONS

#if P_FAMILY_LICKITUNG
static const u16 sLickitungTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sLickilickyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_LICKITUNG

#if P_FAMILY_KOFFING
static const u16 sKoffingTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sWeezingTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sWeezingGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_KOFFING

#if P_FAMILY_RHYHORN
static const u16 sRhyhornTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sRhydonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sRhyperiorTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_RHYHORN

#if P_FAMILY_CHANSEY
#if P_GEN_4_CROSS_EVOS
static const u16 sHappinyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

static const u16 sChanseyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sBlisseyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_CHANSEY

#if P_FAMILY_TANGELA
static const u16 sTangelaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sTangrowthTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_TANGELA

#if P_FAMILY_KANGASKHAN
static const u16 sKangaskhanTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KANGASKHAN

#if P_FAMILY_HORSEA
static const u16 sHorseaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sSeadraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sKingdraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_HORSEA

#if P_FAMILY_GOLDEEN
static const u16 sGoldeenTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSeakingTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GOLDEEN

#if P_FAMILY_STARYU
static const u16 sStaryuTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sStarmieTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_STARYU

#if P_FAMILY_MR_MIME
#if P_GEN_4_CROSS_EVOS
static const u16 sMimeJrTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

static const u16 sMrMimeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sMrMimeGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMrRimeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_MR_MIME

#if P_FAMILY_SCYTHER
static const u16 sScytherTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sScizorTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

#if P_GEN_8_CROSS_EVOS
static const u16 sKleavorTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_8_CROSS_EVOS
#endif //P_FAMILY_SCYTHER

#if P_FAMILY_JYNX
#if P_GEN_2_CROSS_EVOS
static const u16 sSmoochumTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

static const u16 sJynxTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_JYNX

#if P_FAMILY_ELECTABUZZ
#if P_GEN_2_CROSS_EVOS
static const u16 sElekidTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

static const u16 sElectabuzzTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sElectivireTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_ELECTABUZZ

#if P_FAMILY_MAGMAR
#if P_GEN_2_CROSS_EVOS
static const u16 sMagbyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

static const u16 sMagmarTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sMagmortarTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_MAGMAR

#if P_FAMILY_PINSIR
static const u16 sPinsirTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PINSIR

#if P_FAMILY_TAUROS
static const u16 sTaurosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_PALDEAN_FORMS
static const u16 sTaurosPaldeanCombatBreedTeachableLearnset[] = {
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sTaurosPaldeanBlazeBreedTeachableLearnset[] = {
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sTaurosPaldeanAquaBreedTeachableLearnset[] = {
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_PALDEAN_FORMS
#endif //P_FAMILY_TAUROS

#if P_FAMILY_MAGIKARP
static const u16 sMagikarpTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sGyaradosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MAGIKARP

#if P_FAMILY_LAPRAS
static const u16 sLaprasTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LAPRAS

#if P_FAMILY_DITTO
static const u16 sDittoTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DITTO

#if P_FAMILY_EEVEE
static const u16 sEeveeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sVaporeonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sJolteonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sFlareonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sEspeonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sUmbreonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_2_CROSS_EVOS

#if P_GEN_4_CROSS_EVOS
static const u16 sLeafeonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sGlaceonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

#if P_GEN_6_CROSS_EVOS
static const u16 sSylveonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_6_CROSS_EVOS
#endif //P_FAMILY_EEVEE

#if P_FAMILY_PORYGON
static const u16 sPorygonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_2_CROSS_EVOS
static const u16 sPorygon2TeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sPorygonZTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_GEN_2_CROSS_EVOS
#endif //P_FAMILY_PORYGON

#if P_FAMILY_OMANYTE
static const u16 sOmanyteTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sOmastarTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_OMANYTE

#if P_FAMILY_KABUTO
static const u16 sKabutoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sKabutopsTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KABUTO

#if P_FAMILY_AERODACTYL
static const u16 sAerodactylTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_AERODACTYL

#if P_FAMILY_SNORLAX
#if P_GEN_4_CROSS_EVOS
static const u16 sMunchlaxTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

static const u16 sSnorlaxTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SNORLAX

#if P_FAMILY_ARTICUNO
static const u16 sArticunoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sArticunoGalarianTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_ARTICUNO

#if P_FAMILY_ZAPDOS
static const u16 sZapdosTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sZapdosGalarianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_ZAPDOS

#if P_FAMILY_MOLTRES
static const u16 sMoltresTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sMoltresGalarianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_MOLTRES

#if P_FAMILY_DRATINI
static const u16 sDratiniTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDragonairTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDragoniteTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DRATINI

#if P_FAMILY_MEWTWO
static const u16 sMewtwoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MEWTWO

#if P_FAMILY_MEW
// Instead of reading this array for Mew, it checks for exceptions in CanLearnTeachableMove instead.
static const u16 sMewTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MEW

#if P_FAMILY_CHIKORITA
static const u16 sChikoritaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sBayleefTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sMeganiumTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHIKORITA

#if P_FAMILY_CYNDAQUIL
static const u16 sCyndaquilTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sQuilavaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sTyphlosionTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sTyphlosionHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_CYNDAQUIL

#if P_FAMILY_TOTODILE
static const u16 sTotodileTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCroconawTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sFeraligatrTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TOTODILE

#if P_FAMILY_SENTRET
static const u16 sSentretTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sFurretTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SENTRET

#if P_FAMILY_HOOTHOOT
static const u16 sHoothootTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sNoctowlTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HOOTHOOT

#if P_FAMILY_LEDYBA
static const u16 sLedybaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sLedianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LEDYBA

#if P_FAMILY_SPINARAK
static const u16 sSpinarakTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sAriadosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPINARAK

#if P_FAMILY_CHINCHOU
static const u16 sChinchouTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLanturnTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHINCHOU

#if P_FAMILY_TOGEPI
static const u16 sTogepiTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sTogeticTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SOFT_BOILED,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sTogekissTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_TOGEPI

#if P_FAMILY_NATU
static const u16 sNatuTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sXatuTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NATU

#if P_FAMILY_MAREEP
static const u16 sMareepTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sFlaaffyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sAmpharosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MAREEP

#if P_FAMILY_MARILL
#if P_GEN_3_CROSS_EVOS
static const u16 sAzurillTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_3_CROSS_EVOS

static const u16 sMarillTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sAzumarillTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MARILL

#if P_FAMILY_SUDOWOODO
#if P_GEN_4_CROSS_EVOS
static const u16 sBonslyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

static const u16 sSudowoodoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SUDOWOODO

#if P_FAMILY_HOPPIP
static const u16 sHoppipTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSkiploomTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sJumpluffTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HOPPIP

#if P_FAMILY_AIPOM
static const u16 sAipomTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sAmbipomTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_AIPOM

#if P_FAMILY_SUNKERN
static const u16 sSunkernTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSunfloraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SUNKERN

#if P_FAMILY_YANMA
static const u16 sYanmaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sYanmegaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_YANMA

#if P_FAMILY_WOOPER
static const u16 sWooperTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sQuagsireTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_PALDEAN_FORMS
static const u16 sWooperPaldeanTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sClodsireTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_PALDEAN_FORMS
#endif //P_FAMILY_WOOPER

#if P_FAMILY_MURKROW
static const u16 sMurkrowTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sHonchkrowTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_MURKROW

#if P_FAMILY_MISDREAVUS
static const u16 sMisdreavusTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sMismagiusTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_MISDREAVUS

#if P_FAMILY_UNOWN
static const u16 sUnownTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_UNOWN

#if P_FAMILY_WOBBUFFET
#if P_GEN_3_CROSS_EVOS
static const u16 sWynautTeachableLearnset[] = {
    MOVE_SAFEGUARD,
    MOVE_COUNTER,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_3_CROSS_EVOS

static const u16 sWobbuffetTeachableLearnset[] = {
    MOVE_SAFEGUARD,
    MOVE_COUNTER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WOBBUFFET

#if P_FAMILY_GIRAFARIG
static const u16 sGirafarigTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_9_CROSS_EVOS
static const u16 sFarigirafTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_9_CROSS_EVOS
#endif //P_FAMILY_GIRAFARIG

#if P_FAMILY_PINECO
static const u16 sPinecoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sForretressTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PINECO

#if P_FAMILY_DUNSPARCE
static const u16 sDunsparceTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_9_CROSS_EVOS
static const u16 sDudunsparceTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_9_CROSS_EVOS
#endif //P_FAMILY_DUNSPARCE

#if P_FAMILY_GLIGAR
static const u16 sGligarTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sGliscorTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_GLIGAR

#if P_FAMILY_SNUBBULL
static const u16 sSnubbullTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGranbullTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SNUBBULL

#if P_FAMILY_QWILFISH
static const u16 sQwilfishTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sQwilfishHisuianTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sOverqwilTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_QWILFISH

#if P_FAMILY_SHUCKLE
static const u16 sShuckleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHUCKLE

#if P_FAMILY_HERACROSS
static const u16 sHeracrossTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HERACROSS

#if P_FAMILY_SNEASEL
static const u16 sSneaselTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sWeavileTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

#if P_HISUIAN_FORMS
static const u16 sSneaselHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSneaslerTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_SNEASEL

#if P_FAMILY_TEDDIURSA
static const u16 sTeddiursaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sUrsaringTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_GEN_8_CROSS_EVOS
static const u16 sUrsalunaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sUrsalunaBloodmoonTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_8_CROSS_EVOS
#endif //P_FAMILY_TEDDIURSA

#if P_FAMILY_SLUGMA
static const u16 sSlugmaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sMagcargoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SLUGMA

#if P_FAMILY_SWINUB
static const u16 sSwinubTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sPiloswineTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sMamoswineTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_SWINUB

#if P_FAMILY_CORSOLA
static const u16 sCorsolaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sCorsolaGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sCursolaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_CORSOLA

#if P_FAMILY_REMORAID
static const u16 sRemoraidTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BULLET_SEED,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sOctilleryTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BULLET_SEED,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_REMORAID

#if P_FAMILY_DELIBIRD
static const u16 sDelibirdTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DELIBIRD

#if P_FAMILY_MANTINE
#if P_GEN_4_CROSS_EVOS
static const u16 sMantykeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

static const u16 sMantineTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BULLET_SEED,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MANTINE

#if P_FAMILY_SKARMORY
static const u16 sSkarmoryTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SKARMORY

#if P_FAMILY_HOUNDOUR
static const u16 sHoundourTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sHoundoomTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HOUNDOUR

#if P_FAMILY_PHANPY
static const u16 sPhanpyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sDonphanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PHANPY

#if P_FAMILY_STANTLER
static const u16 sStantlerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_8_CROSS_EVOS
static const u16 sWyrdeerTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_8_CROSS_EVOS
#endif //P_FAMILY_STANTLER

#if P_FAMILY_SMEARGLE
static const u16 sSmeargleTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SMEARGLE

#if P_FAMILY_MILTANK
static const u16 sMiltankTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MILTANK

#if P_FAMILY_RAIKOU
static const u16 sRaikouTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_RAIKOU

#if P_FAMILY_ENTEI
static const u16 sEnteiTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ENTEI

#if P_FAMILY_SUICUNE
static const u16 sSuicuneTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SUICUNE

#if P_FAMILY_LARVITAR
static const u16 sLarvitarTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sPupitarTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sTyranitarTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LARVITAR

#if P_FAMILY_LUGIA
static const u16 sLugiaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LUGIA

#if P_FAMILY_HO_OH
static const u16 sHoOhTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HO_OH

#if P_FAMILY_CELEBI
static const u16 sCelebiTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CELEBI

#if P_FAMILY_TREECKO
static const u16 sTreeckoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sGrovyleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sSceptileTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TREECKO

#if P_FAMILY_TORCHIC
static const u16 sTorchicTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCombuskenTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sBlazikenTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TORCHIC

#if P_FAMILY_MUDKIP
static const u16 sMudkipTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sMarshtompTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSwampertTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MUDKIP

#if P_FAMILY_POOCHYENA
static const u16 sPoochyenaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sMightyenaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_POOCHYENA

#if P_FAMILY_ZIGZAGOON
static const u16 sZigzagoonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLinooneTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sZigzagoonGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLinooneGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sObstagoonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_ZIGZAGOON

#if P_FAMILY_WURMPLE
static const u16 sWurmpleTeachableLearnset[] = {
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sSilcoonTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sBeautiflyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sCascoonTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sDustoxTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WURMPLE

#if P_FAMILY_LOTAD
static const u16 sLotadTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sLombreTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sLudicoloTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LOTAD

#if P_FAMILY_SEEDOT
static const u16 sSeedotTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sNuzleafTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sShiftryTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SEEDOT

#if P_FAMILY_TAILLOW
static const u16 sTaillowTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sSwellowTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TAILLOW

#if P_FAMILY_WINGULL
static const u16 sWingullTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPelipperTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WINGULL

#if P_FAMILY_RALTS
static const u16 sRaltsTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sKirliaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGardevoirTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sGalladeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_RALTS

#if P_FAMILY_SURSKIT
static const u16 sSurskitTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sMasquerainTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SURSKIT

#if P_FAMILY_SHROOMISH
static const u16 sShroomishTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sBreloomTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHROOMISH

#if P_FAMILY_SLAKOTH
static const u16 sSlakothTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sVigorothTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSlakingTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SLAKOTH

#if P_FAMILY_NINCADA
static const u16 sNincadaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sNinjaskTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sShedinjaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NINCADA

#if P_FAMILY_WHISMUR
static const u16 sWhismurTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sLoudredTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_ICE_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sExploudTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WHISMUR

#if P_FAMILY_MAKUHITA
static const u16 sMakuhitaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sHariyamaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MAKUHITA

#if P_FAMILY_NOSEPASS
static const u16 sNosepassTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sProbopassTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_NOSEPASS

#if P_FAMILY_SKITTY
static const u16 sSkittyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDelcattyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SKITTY

#if P_FAMILY_SABLEYE
static const u16 sSableyeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SABLEYE

#if P_FAMILY_MAWILE
static const u16 sMawileTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MAWILE

#if P_FAMILY_ARON
static const u16 sAronTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sLaironTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sAggronTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ARON

#if P_FAMILY_MEDITITE
static const u16 sMedititeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMedichamTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MEDITITE

#if P_FAMILY_ELECTRIKE
static const u16 sElectrikeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sManectricTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ELECTRIKE

#if P_FAMILY_PLUSLE
static const u16 sPlusleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PLUSLE

#if P_FAMILY_MINUN
static const u16 sMinunTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MINUN

#if P_FAMILY_VOLBEAT_ILLUMISE
static const u16 sVolbeatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sIllumiseTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VOLBEAT_ILLUMISE

#if P_FAMILY_ROSELIA
#if P_GEN_4_CROSS_EVOS
static const u16 sBudewTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

static const u16 sRoseliaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sRoseradeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_ROSELIA

#if P_FAMILY_GULPIN
static const u16 sGulpinTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSwalotTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GULPIN

#if P_FAMILY_CARVANHA
static const u16 sCarvanhaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sSharpedoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CARVANHA

#if P_FAMILY_WAILMER
static const u16 sWailmerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sWailordTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WAILMER

#if P_FAMILY_NUMEL
static const u16 sNumelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sCameruptTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NUMEL

#if P_FAMILY_TORKOAL
static const u16 sTorkoalTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TORKOAL

#if P_FAMILY_SPOINK
static const u16 sSpoinkTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGrumpigTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPOINK

#if P_FAMILY_SPINDA
static const u16 sSpindaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPINDA

#if P_FAMILY_TRAPINCH
static const u16 sTrapinchTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sVibravaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFlygonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TRAPINCH

#if P_FAMILY_CACNEA
static const u16 sCacneaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sCacturneTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CACNEA

#if P_FAMILY_SWABLU
static const u16 sSwabluTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sAltariaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SWABLU

#if P_FAMILY_ZANGOOSE
static const u16 sZangooseTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ZANGOOSE

#if P_FAMILY_SEVIPER
static const u16 sSeviperTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SEVIPER

#if P_FAMILY_LUNATONE
static const u16 sLunatoneTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LUNATONE

#if P_FAMILY_SOLROCK
static const u16 sSolrockTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SOLROCK

#if P_FAMILY_BARBOACH
static const u16 sBarboachTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sWhiscashTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BARBOACH

#if P_FAMILY_CORPHISH
static const u16 sCorphishTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCrawdauntTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CORPHISH

#if P_FAMILY_BALTOY
static const u16 sBaltoyTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sClaydolTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BALTOY

#if P_FAMILY_LILEEP
static const u16 sLileepTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCradilyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LILEEP

#if P_FAMILY_ANORITH
static const u16 sAnorithTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sArmaldoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ANORITH

#if P_FAMILY_FEEBAS
static const u16 sFeebasTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sMiloticTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FEEBAS

#if P_FAMILY_CASTFORM
static const u16 sCastformTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CASTFORM

#if P_FAMILY_KECLEON
static const u16 sKecleonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KECLEON

#if P_FAMILY_SHUPPET
static const u16 sShuppetTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sBanetteTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHUPPET

#if P_FAMILY_DUSKULL
static const u16 sDuskullTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sDusclopsTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sDusknoirTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_DUSKULL

#if P_FAMILY_TROPIUS
static const u16 sTropiusTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TROPIUS

#if P_FAMILY_CHIMECHO
#if P_GEN_4_CROSS_EVOS
static const u16 sChinglingTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS

static const u16 sChimechoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHIMECHO

#if P_FAMILY_ABSOL
static const u16 sAbsolTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ABSOL

#if P_FAMILY_SNORUNT
static const u16 sSnoruntTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGlalieTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_GEN_4_CROSS_EVOS
static const u16 sFroslassTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_4_CROSS_EVOS
#endif //P_FAMILY_SNORUNT

#if P_FAMILY_SPHEAL
static const u16 sSphealTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSealeoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sWalreinTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPHEAL

#if P_FAMILY_CLAMPERL
static const u16 sClamperlTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sHuntailTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SNATCH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sGorebyssTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CLAMPERL

#if P_FAMILY_RELICANTH
static const u16 sRelicanthTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_RELICANTH

#if P_FAMILY_LUVDISC
static const u16 sLuvdiscTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LUVDISC

#if P_FAMILY_BAGON
static const u16 sBagonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sShelgonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSalamenceTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BAGON

#if P_FAMILY_BELDUM
static const u16 sBeldumTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sMetangTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMetagrossTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BELDUM

#if P_FAMILY_REGIROCK
static const u16 sRegirockTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_REGIROCK

#if P_FAMILY_REGICE
static const u16 sRegiceTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_REGICE

#if P_FAMILY_REGISTEEL
static const u16 sRegisteelTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_REGISTEEL

#if P_FAMILY_LATIAS
static const u16 sLatiasTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LATIAS

#if P_FAMILY_LATIOS
static const u16 sLatiosTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LATIOS

#if P_FAMILY_KYOGRE
static const u16 sKyogreTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KYOGRE

#if P_FAMILY_GROUDON
static const u16 sGroudonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GROUDON

#if P_FAMILY_RAYQUAZA
static const u16 sRayquazaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_RAYQUAZA

#if P_FAMILY_JIRACHI
static const u16 sJirachiTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_JIRACHI

#if P_FAMILY_DEOXYS
static const u16 sDeoxysNormalTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDeoxysAttackTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDeoxysDefenseTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDeoxysSpeedTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DEOXYS

#if P_FAMILY_TURTWIG
static const u16 sTurtwigTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sGrotleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sTorterraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TURTWIG

#if P_FAMILY_CHIMCHAR
static const u16 sChimcharTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMonfernoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sInfernapeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHIMCHAR

#if P_FAMILY_PIPLUP
static const u16 sPiplupTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPrinplupTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sEmpoleonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PIPLUP

#if P_FAMILY_STARLY
static const u16 sStarlyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sStaraviaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sStaraptorTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_STARLY

#if P_FAMILY_BIDOOF
static const u16 sBidoofTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sBibarelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BIDOOF

#if P_FAMILY_KRICKETOT
static const u16 sKricketotTeachableLearnset[] = {
    MOVE_MUD_SLAP,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sKricketuneTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KRICKETOT

#if P_FAMILY_SHINX
static const u16 sShinxTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLuxioTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLuxrayTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHINX

#if P_FAMILY_CRANIDOS
static const u16 sCranidosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sRampardosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CRANIDOS

#if P_FAMILY_SHIELDON
static const u16 sShieldonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sBastiodonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHIELDON

#if P_FAMILY_BURMY
static const u16 sBurmyTeachableLearnset[] = {
    MOVE_PROTECT,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sWormadamPlantCloakTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sWormadamSandyCloakTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sWormadamTrashCloakTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sMothimTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BURMY

#if P_FAMILY_COMBEE
static const u16 sCombeeTeachableLearnset[] = {
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sVespiquenTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_COMBEE

#if P_FAMILY_PACHIRISU
static const u16 sPachirisuTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PACHIRISU

#if P_FAMILY_BUIZEL
static const u16 sBuizelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFloatzelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BUIZEL

#if P_FAMILY_CHERUBI
static const u16 sCherubiTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCherrimTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHERUBI

#if P_FAMILY_SHELLOS
static const u16 sShellosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGastrodonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHELLOS

#if P_FAMILY_DRIFLOON
static const u16 sDrifloonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDrifblimTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DRIFLOON

#if P_FAMILY_BUNEARY
static const u16 sBunearyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLopunnyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BUNEARY

#if P_FAMILY_GLAMEOW
static const u16 sGlameowTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPuruglyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GLAMEOW

#if P_FAMILY_STUNKY
static const u16 sStunkyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sSkuntankTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_STUNKY

#if P_FAMILY_BRONZOR
static const u16 sBronzorTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sBronzongTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BRONZOR

#if P_FAMILY_CHATOT
static const u16 sChatotTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHATOT

#if P_FAMILY_SPIRITOMB
static const u16 sSpiritombTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPIRITOMB

#if P_FAMILY_GIBLE
static const u16 sGibleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sGabiteTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sGarchompTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GIBLE

#if P_FAMILY_RIOLU
static const u16 sRioluTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sLucarioTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_RIOLU

#if P_FAMILY_HIPPOPOTAS
static const u16 sHippopotasTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sHippowdonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HIPPOPOTAS

#if P_FAMILY_SKORUPI
static const u16 sSkorupiTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDrapionTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SKORUPI

#if P_FAMILY_CROAGUNK
static const u16 sCroagunkTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sToxicroakTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CROAGUNK

#if P_FAMILY_CARNIVINE
static const u16 sCarnivineTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CARNIVINE

#if P_FAMILY_FINNEON
static const u16 sFinneonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sLumineonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FINNEON

#if P_FAMILY_SNOVER
static const u16 sSnoverTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sAbomasnowTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SNOVER

#if P_FAMILY_ROTOM
static const u16 sRotomTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ROTOM

#if P_FAMILY_UXIE
static const u16 sUxieTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_UXIE

#if P_FAMILY_MESPRIT
static const u16 sMespritTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MESPRIT

#if P_FAMILY_AZELF
static const u16 sAzelfTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_AZELF

#if P_FAMILY_DIALGA
static const u16 sDialgaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DIALGA

#if P_FAMILY_PALKIA
static const u16 sPalkiaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PALKIA

#if P_FAMILY_HEATRAN
static const u16 sHeatranTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HEATRAN

#if P_FAMILY_REGIGIGAS
static const u16 sRegigigasTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_REGIGIGAS

#if P_FAMILY_GIRATINA
static const u16 sGiratinaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GIRATINA

#if P_FAMILY_CRESSELIA
static const u16 sCresseliaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CRESSELIA

#if P_FAMILY_MANAPHY
static const u16 sPhioneTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sManaphyTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MANAPHY

#if P_FAMILY_DARKRAI
static const u16 sDarkraiTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DARKRAI

#if P_FAMILY_SHAYMIN
static const u16 sShayminLandTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sShayminSkyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHAYMIN

#if P_FAMILY_ARCEUS
static const u16 sArceusTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ARCEUS

#if P_FAMILY_VICTINI
static const u16 sVictiniTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VICTINI

#if P_FAMILY_SNIVY
static const u16 sSnivyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sServineTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSerperiorTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SNIVY

#if P_FAMILY_TEPIG
static const u16 sTepigTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sPigniteTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sEmboarTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TEPIG

#if P_FAMILY_OSHAWOTT
static const u16 sOshawottTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDewottTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sSamurottTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sSamurottHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_OSHAWOTT

#if P_FAMILY_PATRAT
static const u16 sPatratTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sWatchogTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PATRAT

#if P_FAMILY_LILLIPUP
static const u16 sLillipupTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sHerdierTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sStoutlandTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LILLIPUP

#if P_FAMILY_PURRLOIN
static const u16 sPurrloinTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLiepardTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PURRLOIN

#if P_FAMILY_PANSAGE
static const u16 sPansageTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSimisageTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PANSAGE

#if P_FAMILY_PANSEAR
static const u16 sPansearTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_FIRE_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSimisearTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_FIRE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PANSEAR

#if P_FAMILY_PANPOUR
static const u16 sPanpourTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSimipourTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PANPOUR

#if P_FAMILY_MUNNA
static const u16 sMunnaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMusharnaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MUNNA

#if P_FAMILY_PIDOVE
static const u16 sPidoveTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sTranquillTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sUnfezantTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PIDOVE

#if P_FAMILY_BLITZLE
static const u16 sBlitzleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sZebstrikaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BLITZLE

#if P_FAMILY_ROGGENROLA
static const u16 sRoggenrolaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sBoldoreTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGigalithTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ROGGENROLA

#if P_FAMILY_WOOBAT
static const u16 sWoobatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_STEEL_WING,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSwoobatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_STEEL_WING,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WOOBAT

#if P_FAMILY_DRILBUR
static const u16 sDrilburTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sExcadrillTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DRILBUR

#if P_FAMILY_AUDINO
static const u16 sAudinoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_AUDINO

#if P_FAMILY_TIMBURR
static const u16 sTimburrTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sGurdurrTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sConkeldurrTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TIMBURR

#if P_FAMILY_TYMPOLE
static const u16 sTympoleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sPalpitoadTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSeismitoadTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TYMPOLE

#if P_FAMILY_THROH
static const u16 sThrohTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_THROH

#if P_FAMILY_SAWK
static const u16 sSawkTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SAWK

#if P_FAMILY_SEWADDLE
static const u16 sSewaddleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSwadloonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sLeavannyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SEWADDLE

#if P_FAMILY_VENIPEDE
static const u16 sVenipedeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sWhirlipedeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sScolipedeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VENIPEDE

#if P_FAMILY_COTTONEE
static const u16 sCottoneeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sWhimsicottTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_COTTONEE

#if P_FAMILY_PETILIL
static const u16 sPetililTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sLilligantTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sLilligantHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_PETILIL

#if P_FAMILY_BASCULIN
static const u16 sBasculinTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sBasculinWhiteStripedTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sBasculegionTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_BASCULIN

#if P_FAMILY_SANDILE
static const u16 sSandileTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sKrokorokTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sKrookodileTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SANDILE

#if P_FAMILY_DARUMAKA
static const u16 sDarumakaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sDarmanitanTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sDarumakaGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sDarmanitanGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_DARUMAKA

#if P_FAMILY_MARACTUS
static const u16 sMaractusTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MARACTUS

#if P_FAMILY_DWEBBLE
static const u16 sDwebbleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCrustleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DWEBBLE

#if P_FAMILY_SCRAGGY
static const u16 sScraggyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sScraftyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SCRAGGY

#if P_FAMILY_SIGILYPH
static const u16 sSigilyphTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SIGILYPH

#if P_FAMILY_YAMASK
static const u16 sYamaskTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sCofagrigusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sYamaskGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sRunerigusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_YAMASK

#if P_FAMILY_TIRTOUGA
static const u16 sTirtougaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sCarracostaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TIRTOUGA

#if P_FAMILY_ARCHEN
static const u16 sArchenTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sArcheopsTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ARCHEN

#if P_FAMILY_TRUBBISH
static const u16 sTrubbishTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGarbodorTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TRUBBISH

#if P_FAMILY_ZORUA
static const u16 sZoruaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sZoroarkTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sZoruaHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sZoroarkHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_ZORUA

#if P_FAMILY_MINCCINO
static const u16 sMinccinoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sCinccinoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MINCCINO

#if P_FAMILY_GOTHITA
static const u16 sGothitaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGothoritaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGothitelleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GOTHITA

#if P_FAMILY_SOLOSIS
static const u16 sSolosisTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDuosionTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sReuniclusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SOLOSIS

#if P_FAMILY_DUCKLETT
static const u16 sDucklettTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sSwannaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DUCKLETT

#if P_FAMILY_VANILLITE
static const u16 sVanilliteTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sVanillishTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sVanilluxeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VANILLITE

#if P_FAMILY_DEERLING
static const u16 sDeerlingTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSawsbuckTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DEERLING

#if P_FAMILY_EMOLGA
static const u16 sEmolgaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_EMOLGA

#if P_FAMILY_KARRABLAST
static const u16 sKarrablastTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sEscavalierTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KARRABLAST

#if P_FAMILY_FOONGUS
static const u16 sFoongusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sAmoongussTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FOONGUS

#if P_FAMILY_FRILLISH
static const u16 sFrillishTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sJellicentTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FRILLISH

#if P_FAMILY_ALOMOMOLA
static const u16 sAlomomolaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ALOMOMOLA

#if P_FAMILY_JOLTIK
static const u16 sJoltikTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGalvantulaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_JOLTIK

#if P_FAMILY_FERROSEED
static const u16 sFerroseedTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sFerrothornTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FERROSEED

#if P_FAMILY_KLINK
static const u16 sKlinkTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sKlangTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sKlinklangTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KLINK

#if P_FAMILY_TYNAMO
static const u16 sTynamoTeachableLearnset[] = {
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sEelektrikTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sEelektrossTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TYNAMO

#if P_FAMILY_ELGYEM
static const u16 sElgyemTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sBeheeyemTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ELGYEM

#if P_FAMILY_LITWICK
static const u16 sLitwickTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sLampentTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sChandelureTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LITWICK

#if P_FAMILY_AXEW
static const u16 sAxewTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sFraxureTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sHaxorusTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_AXEW

#if P_FAMILY_CUBCHOO
static const u16 sCubchooTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sBearticTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CUBCHOO

#if P_FAMILY_CRYOGONAL
static const u16 sCryogonalTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CRYOGONAL

#if P_FAMILY_SHELMET
static const u16 sShelmetTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sAccelgorTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHELMET

#if P_FAMILY_STUNFISK
static const u16 sStunfiskTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GALARIAN_FORMS
static const u16 sStunfiskGalarianTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GALARIAN_FORMS
#endif //P_FAMILY_STUNFISK

#if P_FAMILY_MIENFOO
static const u16 sMienfooTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sMienshaoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MIENFOO

#if P_FAMILY_DRUDDIGON
static const u16 sDruddigonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DRUDDIGON

#if P_FAMILY_GOLETT
static const u16 sGolettTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sGolurkTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GOLETT

#if P_FAMILY_PAWNIARD
static const u16 sPawniardTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sBisharpTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_9_CROSS_EVOS
static const u16 sKingambitTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_9_CROSS_EVOS
#endif //P_FAMILY_PAWNIARD

#if P_FAMILY_BOUFFALANT
static const u16 sBouffalantTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BOUFFALANT

#if P_FAMILY_RUFFLET
static const u16 sRuffletTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sBraviaryTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sBraviaryHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_RUFFLET

#if P_FAMILY_VULLABY
static const u16 sVullabyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sMandibuzzTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VULLABY

#if P_FAMILY_HEATMOR
static const u16 sHeatmorTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HEATMOR

#if P_FAMILY_DURANT
static const u16 sDurantTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DURANT

#if P_FAMILY_DEINO
static const u16 sDeinoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sZweilousTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sHydreigonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DEINO

#if P_FAMILY_LARVESTA
static const u16 sLarvestaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sVolcaronaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LARVESTA

#if P_FAMILY_COBALION
static const u16 sCobalionTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_COBALION

#if P_FAMILY_TERRAKION
static const u16 sTerrakionTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TERRAKION

#if P_FAMILY_VIRIZION
static const u16 sVirizionTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VIRIZION

#if P_FAMILY_TORNADUS
static const u16 sTornadusTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TORNADUS

#if P_FAMILY_THUNDURUS
static const u16 sThundurusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_THUNDURUS

#if P_FAMILY_RESHIRAM
static const u16 sReshiramTeachableLearnset[] = {
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_RESHIRAM

#if P_FAMILY_ZEKROM
static const u16 sZekromTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ZEKROM

#if P_FAMILY_LANDORUS
static const u16 sLandorusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LANDORUS

#if P_FAMILY_KYUREM
static const u16 sKyuremTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KYUREM

#if P_FAMILY_KELDEO
static const u16 sKeldeoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KELDEO

#if P_FAMILY_MELOETTA
static const u16 sMeloettaTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MELOETTA

#if P_FAMILY_GENESECT
static const u16 sGenesectTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GENESECT

#if P_FAMILY_CHESPIN
static const u16 sChespinTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sQuilladinTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sChesnaughtTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHESPIN

#if P_FAMILY_FENNEKIN
static const u16 sFennekinTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sBraixenTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sDelphoxTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FENNEKIN

#if P_FAMILY_FROAKIE
static const u16 sFroakieTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFrogadierTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sGreninjaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FROAKIE

#if P_FAMILY_BUNNELBY
static const u16 sBunnelbyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDiggersbyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BUNNELBY

#if P_FAMILY_FLETCHLING
static const u16 sFletchlingTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sFletchinderTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SNATCH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sTalonflameTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FLETCHLING

#if P_FAMILY_SCATTERBUG
static const u16 sScatterbugTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sSpewpaTeachableLearnset[] = {
    MOVE_PROTECT,
    MOVE_UNAVAILABLE,
};

static const u16 sVivillonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SCATTERBUG

#if P_FAMILY_LITLEO
static const u16 sLitleoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPyroarTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LITLEO

#if P_FAMILY_FLABEBE
static const u16 sFlabebeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFloetteTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFloetteEternalFlowerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFlorgesTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FLABEBE

#if P_FAMILY_SKIDDO
static const u16 sSkiddoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGogoatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SKIDDO

#if P_FAMILY_PANCHAM
static const u16 sPanchamTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sPangoroTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PANCHAM

#if P_FAMILY_FURFROU
static const u16 sFurfrouTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FURFROU

#if P_FAMILY_ESPURR
static const u16 sEspurrTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMeowsticMaleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMeowsticFemaleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ESPURR

#if P_FAMILY_HONEDGE
static const u16 sHonedgeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDoubladeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sAegislashTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HONEDGE

#if P_FAMILY_SPRITZEE
static const u16 sSpritzeeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sAromatisseTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPRITZEE

#if P_FAMILY_SWIRLIX
static const u16 sSwirlixTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSlurpuffTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SWIRLIX

#if P_FAMILY_INKAY
static const u16 sInkayTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sMalamarTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_INKAY

#if P_FAMILY_BINACLE
static const u16 sBinacleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sBarbaracleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BINACLE

#if P_FAMILY_SKRELP
static const u16 sSkrelpTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sDragalgeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SKRELP

#if P_FAMILY_CLAUNCHER
static const u16 sClauncherTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sClawitzerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CUT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CLAUNCHER

#if P_FAMILY_HELIOPTILE
static const u16 sHelioptileTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sHelioliskTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HELIOPTILE

#if P_FAMILY_TYRUNT
static const u16 sTyruntTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sTyrantrumTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TYRUNT

#if P_FAMILY_AMAURA
static const u16 sAmauraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sAurorusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_AMAURA

#if P_FAMILY_HAWLUCHA
static const u16 sHawluchaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_STEEL_WING,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HAWLUCHA

#if P_FAMILY_DEDENNE
static const u16 sDedenneTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DEDENNE

#if P_FAMILY_CARBINK
static const u16 sCarbinkTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CARBINK

#if P_FAMILY_GOOMY
static const u16 sGoomyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sSliggooTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGoodraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sSliggooHisuianTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sGoodraHisuianTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_GOOMY

#if P_FAMILY_KLEFKI
static const u16 sKlefkiTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KLEFKI

#if P_FAMILY_PHANTUMP
static const u16 sPhantumpTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sTrevenantTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PHANTUMP

#if P_FAMILY_PUMPKABOO
static const u16 sPumpkabooTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGourgeistTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PUMPKABOO

#if P_FAMILY_BERGMITE
static const u16 sBergmiteTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sAvaluggTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_STRENGTH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sAvaluggHisuianTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_BERGMITE

#if P_FAMILY_NOIBAT
static const u16 sNoibatTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sNoivernTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NOIBAT

#if P_FAMILY_XERNEAS
static const u16 sXerneasTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_XERNEAS

#if P_FAMILY_YVELTAL
static const u16 sYveltalTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_YVELTAL

#if P_FAMILY_ZYGARDE
static const u16 sZygardeTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ZYGARDE

#if P_FAMILY_DIANCIE
static const u16 sDiancieTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DIANCIE

#if P_FAMILY_HOOPA
static const u16 sHoopaConfinedTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sHoopaUnboundTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HOOPA

#if P_FAMILY_VOLCANION
static const u16 sVolcanionTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CUT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VOLCANION

#if P_FAMILY_ROWLET
static const u16 sRowletTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDartrixTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sDecidueyeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

#if P_HISUIAN_FORMS
static const u16 sDecidueyeHisuianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_HISUIAN_FORMS
#endif //P_FAMILY_ROWLET

#if P_FAMILY_LITTEN
static const u16 sLittenTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sTorracatTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sIncineroarTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LITTEN

#if P_FAMILY_POPPLIO
static const u16 sPopplioTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sBrionneTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPrimarinaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_POPPLIO

#if P_FAMILY_PIKIPEK
static const u16 sPikipekTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sTrumbeakTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sToucannonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PIKIPEK

#if P_FAMILY_YUNGOOS
static const u16 sYungoosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sGumshoosTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_YUNGOOS

#if P_FAMILY_GRUBBIN
static const u16 sGrubbinTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sCharjabugTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sVikavoltTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GRUBBIN

#if P_FAMILY_CRABRAWLER
static const u16 sCrabrawlerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sCrabominableTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CRABRAWLER

#if P_FAMILY_ORICORIO
static const u16 sOricorioTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ORICORIO

#if P_FAMILY_CUTIEFLY
static const u16 sCutieflyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sRibombeeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CUTIEFLY

#if P_FAMILY_ROCKRUFF
static const u16 sRockruffTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sLycanrocMiddayTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sLycanrocMidnightTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sLycanrocDuskTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ROCKRUFF

#if P_FAMILY_WISHIWASHI
static const u16 sWishiwashiTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WISHIWASHI

#if P_FAMILY_MAREANIE
static const u16 sMareanieTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sToxapexTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MAREANIE

#if P_FAMILY_MUDBRAY
static const u16 sMudbrayTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sMudsdaleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MUDBRAY

#if P_FAMILY_DEWPIDER
static const u16 sDewpiderTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sAraquanidTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DEWPIDER

#if P_FAMILY_FOMANTIS
static const u16 sFomantisTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sLurantisTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FOMANTIS

#if P_FAMILY_MORELULL
static const u16 sMorelullTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sShiinoticTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLASH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MORELULL

#if P_FAMILY_SALANDIT
static const u16 sSalanditTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSalazzleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SALANDIT

#if P_FAMILY_STUFFUL
static const u16 sStuffulTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sBewearTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_STUFFUL

#if P_FAMILY_BOUNSWEET
static const u16 sBounsweetTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sSteeneeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sTsareenaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BOUNSWEET

#if P_FAMILY_COMFEY
static const u16 sComfeyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_COMFEY

#if P_FAMILY_ORANGURU
static const u16 sOranguruTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ORANGURU

#if P_FAMILY_PASSIMIAN
static const u16 sPassimianTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PASSIMIAN

#if P_FAMILY_WIMPOD
static const u16 sWimpodTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sGolisopodTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WIMPOD

#if P_FAMILY_SANDYGAST
static const u16 sSandygastTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sPalossandTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SANDYGAST

#if P_FAMILY_PYUKUMUKU
static const u16 sPyukumukuTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_HAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PYUKUMUKU

#if P_FAMILY_TYPE_NULL
static const u16 sTypeNullTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sSilvallyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TYPE_NULL

#if P_FAMILY_MINIOR
static const u16 sMiniorTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MINIOR

#if P_FAMILY_KOMALA
static const u16 sKomalaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KOMALA

#if P_FAMILY_TURTONATOR
static const u16 sTurtonatorTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TURTONATOR

#if P_FAMILY_TOGEDEMARU
static const u16 sTogedemaruTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TOGEDEMARU

#if P_FAMILY_MIMIKYU
static const u16 sMimikyuTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MIMIKYU

#if P_FAMILY_BRUXISH
static const u16 sBruxishTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SNATCH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BRUXISH

#if P_FAMILY_DRAMPA
static const u16 sDrampaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DRAMPA

#if P_FAMILY_DHELMISE
static const u16 sDhelmiseTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DHELMISE

#if P_FAMILY_JANGMO_O
static const u16 sJangmoOTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sHakamoOTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sKommoOTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_JANGMO_O

#if P_FAMILY_TAPU_KOKO
static const u16 sTapuKokoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_STEEL_WING,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TAPU_KOKO

#if P_FAMILY_TAPU_LELE
static const u16 sTapuLeleTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TAPU_LELE

#if P_FAMILY_TAPU_BULU
static const u16 sTapuBuluTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TAPU_BULU

#if P_FAMILY_TAPU_FINI
static const u16 sTapuFiniTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TAPU_FINI

#if P_FAMILY_COSMOG
static const u16 sCosmogTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sCosmoemTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sSolgaleoTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sLunalaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_DREAM_EATER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_COSMOG

#if P_FAMILY_NIHILEGO
static const u16 sNihilegoTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NIHILEGO

#if P_FAMILY_BUZZWOLE
static const u16 sBuzzwoleTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BUZZWOLE

#if P_FAMILY_PHEROMOSA
static const u16 sPheromosaTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PHEROMOSA

#if P_FAMILY_XURKITREE
static const u16 sXurkitreeTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_XURKITREE

#if P_FAMILY_CELESTEELA
static const u16 sCelesteelaTeachableLearnset[] = {
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CELESTEELA

#if P_FAMILY_KARTANA
static const u16 sKartanaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_CUT,
    MOVE_DOUBLE_TEAM,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FURY_CUTTER,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KARTANA

#if P_FAMILY_GUZZLORD
static const u16 sGuzzlordTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GUZZLORD

#if P_FAMILY_NECROZMA
static const u16 sNecrozmaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NECROZMA

#if P_FAMILY_MAGEARNA
static const u16 sMagearnaTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SHOCK_WAVE,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MAGEARNA

#if P_FAMILY_MARSHADOW
static const u16 sMarshadowTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SHADOW_BALL,
    MOVE_SNATCH,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MARSHADOW

#if P_FAMILY_POIPOLE
static const u16 sPoipoleTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sNaganadelTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SNATCH,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_POIPOLE

#if P_FAMILY_STAKATAKA
static const u16 sStakatakaTeachableLearnset[] = {
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SKILL_SWAP,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_STAKATAKA

#if P_FAMILY_BLACEPHALON
static const u16 sBlacephalonTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BLACEPHALON

#if P_FAMILY_ZERAORA
static const u16 sZeraoraTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SNATCH,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ZERAORA

#if P_FAMILY_MELTAN
static const u16 sMeltanTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMelmetalTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MELTAN

#if P_FAMILY_GROOKEY
static const u16 sGrookeyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sThwackeyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sRillaboomTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_STRENGTH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GROOKEY

#if P_FAMILY_SCORBUNNY
static const u16 sScorbunnyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sRabootTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCinderaceTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SCORBUNNY

#if P_FAMILY_SOBBLE
static const u16 sSobbleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sDrizzileTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sInteleonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SOBBLE

#if P_FAMILY_SKWOVET
static const u16 sSkwovetTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sGreedentTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SKWOVET

#if P_FAMILY_ROOKIDEE
static const u16 sRookideeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sCorvisquireTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sCorviknightTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ROOKIDEE

#if P_FAMILY_BLIPBUG
static const u16 sBlipbugTeachableLearnset[] = {
    MOVE_UNAVAILABLE,
};

static const u16 sDottlerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sOrbeetleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BLIPBUG

#if P_FAMILY_NICKIT
static const u16 sNickitTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sThievulTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NICKIT

#if P_FAMILY_GOSSIFLEUR
static const u16 sGossifleurTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sEldegossTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GOSSIFLEUR

#if P_FAMILY_WOOLOO
static const u16 sWoolooTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDubwoolTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WOOLOO

#if P_FAMILY_CHEWTLE
static const u16 sChewtleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sDrednawTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHEWTLE

#if P_FAMILY_YAMPER
static const u16 sYamperTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sBoltundTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_YAMPER

#if P_FAMILY_ROLYCOLY
static const u16 sRolycolyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sCarkolTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sCoalossalTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ROLYCOLY

#if P_FAMILY_APPLIN
static const u16 sApplinTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DEFENSE_CURL,
    MOVE_ROLLOUT,
    MOVE_UNAVAILABLE,
};

static const u16 sFlappleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sAppletunTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BULLET_SEED,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_9_CROSS_EVOS
static const u16 sDipplinTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sHydrappleTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_9_CROSS_EVOS
#endif //P_FAMILY_APPLIN

#if P_FAMILY_SILICOBRA
static const u16 sSilicobraTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sSandacondaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SILICOBRA

#if P_FAMILY_CRAMORANT
static const u16 sCramorantTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_STEEL_WING,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CRAMORANT

#if P_FAMILY_ARROKUDA
static const u16 sArrokudaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sBarraskewdaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ARROKUDA

#if P_FAMILY_TOXEL
static const u16 sToxelTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sToxtricityAmpedTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sToxtricityLowKeyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TOXEL

#if P_FAMILY_SIZZLIPEDE
static const u16 sSizzlipedeTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sCentiskorchTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SIZZLIPEDE

#if P_FAMILY_CLOBBOPUS
static const u16 sClobbopusTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_TAUNT,
    MOVE_WATERFALL,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sGrapploctTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_WATERFALL,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_PUNCH,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CLOBBOPUS

#if P_FAMILY_SINISTEA
static const u16 sSinisteaTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sPolteageistTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SINISTEA

#if P_FAMILY_HATENNA
static const u16 sHatennaTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sHattremTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sHattereneTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_HATENNA

#if P_FAMILY_IMPIDIMP
static const u16 sImpidimpTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMorgremTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sGrimmsnarlTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IMPIDIMP

#if P_FAMILY_MILCERY
static const u16 sMilceryTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sAlcremieTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MILCERY

#if P_FAMILY_FALINKS
static const u16 sFalinksTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FALINKS

#if P_FAMILY_PINCURCHIN
static const u16 sPincurchinTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PINCURCHIN

#if P_FAMILY_SNOM
static const u16 sSnomTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};

static const u16 sFrosmothTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SNOM

#if P_FAMILY_STONJOURNER
static const u16 sStonjournerTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_STONJOURNER

#if P_FAMILY_EISCUE
static const u16 sEiscueTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_EISCUE

#if P_FAMILY_INDEEDEE
static const u16 sIndeedeeMaleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sIndeedeeFemaleTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_INDEEDEE

#if P_FAMILY_MORPEKO
static const u16 sMorpekoTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TORMENT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MORPEKO

#if P_FAMILY_CUFANT
static const u16 sCufantTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sCopperajahTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_STRENGTH,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CUFANT

#if P_FAMILY_DRACOZOLT
static const u16 sDracozoltTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DRACOZOLT

#if P_FAMILY_ARCTOZOLT
static const u16 sArctozoltTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ARCTOZOLT

#if P_FAMILY_DRACOVISH
static const u16 sDracovishTeachableLearnset[] = {
    MOVE_DIVE,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DRACOVISH

#if P_FAMILY_ARCTOVISH
static const u16 sArctovishTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ARCTOVISH

#if P_FAMILY_DURALUDON
static const u16 sDuraludonTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

#if P_GEN_9_CROSS_EVOS
static const u16 sArchaludonTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_GEN_9_CROSS_EVOS
#endif //P_FAMILY_DURALUDON

#if P_FAMILY_DREEPY
static const u16 sDreepyTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDrakloakTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sDragapultTeachableLearnset[] = {
    MOVE_ATTRACT,
    MOVE_DIVE,
    MOVE_DOUBLE_TEAM,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_STEEL_WING,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DREEPY

#if P_FAMILY_ZACIAN
static const u16 sZacianTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ZACIAN

#if P_FAMILY_ZAMAZENTA
static const u16 sZamazentaTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ZAMAZENTA

#if P_FAMILY_ETERNATUS
static const u16 sEternatusTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ETERNATUS

#if P_FAMILY_KUBFU
static const u16 sKubfuTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sUrshifuSingleStrikeStyleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sUrshifuRapidStrikeStyleTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_TAUNT,
    MOVE_WATERFALL,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_DYNAMIC_PUNCH,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KUBFU

#if P_FAMILY_ZARUDE
static const u16 sZarudeTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_MEGA_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ZARUDE

#if P_FAMILY_REGIELEKI
static const u16 sRegielekiTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_REGIELEKI

#if P_FAMILY_REGIDRAGO
static const u16 sRegidragoTeachableLearnset[] = {
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_REGIDRAGO

#if P_FAMILY_GLASTRIER
static const u16 sGlastrierTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_FACADE,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GLASTRIER

#if P_FAMILY_SPECTRIER
static const u16 sSpectrierTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPECTRIER

#if P_FAMILY_CALYREX
static const u16 sCalyrexTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

#if P_FUSION_FORMS
static const u16 sCalyrexIceRiderTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HAIL,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SAFEGUARD,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sCalyrexShadowRiderTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SNORE,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FUSION_FORMS
#endif //P_FAMILY_CALYREX

#if P_FAMILY_ENAMORUS
static const u16 sEnamorusTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_TORMENT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ENAMORUS

#if P_FAMILY_SPRIGATITO
static const u16 sSprigatitoTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sFloragatoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};

static const u16 sMeowscaradaTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SPRIGATITO

#if P_FAMILY_FUECOCO
static const u16 sFuecocoTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sCrocalorTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sSkeledirgeTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FUECOCO

#if P_FAMILY_QUAXLY
static const u16 sQuaxlyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sQuaxwellTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sQuaquavalTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_MEGA_KICK,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_QUAXLY

#if P_FAMILY_LECHONK
static const u16 sLechonkTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sOinkologneTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_LECHONK

#if P_FAMILY_TAROUNTULA
static const u16 sTarountulaTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sSpidopsTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TAROUNTULA

#if P_FAMILY_NYMBLE
static const u16 sNymbleTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sLokixTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NYMBLE

#if P_FAMILY_PAWMI
static const u16 sPawmiTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sPawmoTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sPawmotTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PAWMI

#if P_FAMILY_TANDEMAUS
static const u16 sTandemausTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sMausholdTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BULLET_SEED,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_WATER_PULSE,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TANDEMAUS

#if P_FAMILY_FIDOUGH
static const u16 sFidoughTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sDachsbunTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FIDOUGH

#if P_FAMILY_SMOLIV
static const u16 sSmolivTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sDollivTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sArbolivaTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SAFEGUARD,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SMOLIV

#if P_FAMILY_SQUAWKABILLY
static const u16 sSquawkabillyTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SQUAWKABILLY

#if P_FAMILY_NACLI
static const u16 sNacliTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sNaclstackTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sGarganaclTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_NACLI

#if P_FAMILY_CHARCADET
static const u16 sCharcadetTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sArmarougeTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sCeruledgeTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHARCADET

#if P_FAMILY_TADBULB
static const u16 sTadbulbTeachableLearnset[] = {
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sBelliboltTeachableLearnset[] = {
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TADBULB

#if P_FAMILY_WATTREL
static const u16 sWattrelTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sKilowattrelTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WATTREL

#if P_FAMILY_MASCHIFF
static const u16 sMaschiffTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sMabosstiffTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MASCHIFF

#if P_FAMILY_SHROODLE
static const u16 sShroodleTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sGrafaiaiTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SHROODLE

#if P_FAMILY_BRAMBLIN
static const u16 sBramblinTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_THIEF,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sBrambleghastTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_THIEF,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BRAMBLIN

#if P_FAMILY_TOEDSCOOL
static const u16 sToedscoolTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_GIGA_DRAIN,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sToedscruelTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TOEDSCOOL

#if P_FAMILY_KLAWF
static const u16 sKlawfTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KLAWF

#if P_FAMILY_CAPSAKID
static const u16 sCapsakidTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sScovillainTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CAPSAKID

#if P_FAMILY_RELLOR
static const u16 sRellorTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_THIEF,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sRabscaTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SAFEGUARD,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_RELLOR

#if P_FAMILY_FLITTLE
static const u16 sFlittleTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sEspathraTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FLITTLE

#if P_FAMILY_TINKATINK
static const u16 sTinkatinkTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SKILL_SWAP,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sTinkatuffTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SKILL_SWAP,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};

static const u16 sTinkatonTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_SMASH,
    MOVE_ROCK_TOMB,
    MOVE_SKILL_SWAP,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TINKATINK

#if P_FAMILY_WIGLETT
static const u16 sWiglettTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sWugtrioTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SURF,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WIGLETT

#if P_FAMILY_BOMBIRDIER
static const u16 sBombirdierTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BOMBIRDIER

#if P_FAMILY_FINIZEN
static const u16 sFinizenTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};

static const u16 sPalafinTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_BULK_UP,
    MOVE_DIVE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FINIZEN

#if P_FAMILY_VAROOM
static const u16 sVaroomTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};

static const u16 sRevavroomTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TORMENT,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VAROOM

#if P_FAMILY_CYCLIZAR
static const u16 sCyclizarTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CYCLIZAR

#if P_FAMILY_ORTHWORM
static const u16 sOrthwormTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_IRON_TAIL,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ORTHWORM

#if P_FAMILY_GLIMMET
static const u16 sGlimmetTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sGlimmoraTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SLUDGE_BOMB,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_EXPLOSION,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GLIMMET

#if P_FAMILY_GREAVARD
static const u16 sGreavardTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sHoundstoneTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_THIEF,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GREAVARD

#if P_FAMILY_FLAMIGO
static const u16 sFlamigoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BULK_UP,
    MOVE_DOUBLE_TEAM,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_WATER_PULSE,
    MOVE_ENDURE,
    MOVE_MEGA_KICK,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FLAMIGO

#if P_FAMILY_CETODDLE
static const u16 sCetoddleTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sCetitanTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CETODDLE

#if P_FAMILY_VELUZA
static const u16 sVeluzaTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_VELUZA

#if P_FAMILY_DONDOZO
static const u16 sDondozoTeachableLearnset[] = {
    MOVE_DIVE,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_DONDOZO

#if P_FAMILY_TATSUGIRI
static const u16 sTatsugiriTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SURF,
    MOVE_TAUNT,
    MOVE_WATER_PULSE,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TATSUGIRI

#if P_FAMILY_GREAT_TUSK
static const u16 sGreatTuskTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GREAT_TUSK

#if P_FAMILY_SCREAM_TAIL
static const u16 sScreamTailTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_BULK_UP,
    MOVE_CALM_MIND,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SCREAM_TAIL

#if P_FAMILY_BRUTE_BONNET
static const u16 sBruteBonnetTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_BRUTE_BONNET

#if P_FAMILY_FLUTTER_MANE
static const u16 sFlutterManeTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FLUTTER_MANE

#if P_FAMILY_SLITHER_WING
static const u16 sSlitherWingTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SLITHER_WING

#if P_FAMILY_SANDY_SHOCKS
static const u16 sSandyShocksTeachableLearnset[] = {
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_SANDY_SHOCKS

#if P_FAMILY_IRON_TREADS
static const u16 sIronTreadsTeachableLearnset[] = {
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_THUNDER,
    MOVE_BODY_SLAM,
    MOVE_DEFENSE_CURL,
    MOVE_DOUBLE_EDGE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_TREADS

#if P_FAMILY_IRON_BUNDLE
static const u16 sIronBundleTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_BUNDLE

#if P_FAMILY_IRON_HANDS
static const u16 sIronHandsTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_METRONOME,
    MOVE_ROCK_SLIDE,
    MOVE_SEISMIC_TOSS,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_HANDS

#if P_FAMILY_IRON_JUGULIS
static const u16 sIronJugulisTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_JUGULIS

#if P_FAMILY_IRON_MOTH
static const u16 sIronMothTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_MOTH

#if P_FAMILY_IRON_THORNS
static const u16 sIronThornsTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_THORNS

#if P_FAMILY_FRIGIBAX
static const u16 sFrigibaxTeachableLearnset[] = {
    MOVE_BLIZZARD,
    MOVE_DIG,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sArctibaxTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};

static const u16 sBaxcaliburTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FRIGIBAX

#if P_FAMILY_GIMMIGHOUL
static const u16 sGimmighoulTeachableLearnset[] = {
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_THIEF,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sGholdengoTeachableLearnset[] = {
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SANDSTORM,
    MOVE_SHADOW_BALL,
    MOVE_THIEF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GIMMIGHOUL

#if P_FAMILY_WO_CHIEN
static const u16 sWoChienTeachableLearnset[] = {
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WO_CHIEN

#if P_FAMILY_CHIEN_PAO
static const u16 sChienPaoTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BLIZZARD,
    MOVE_BRICK_BREAK,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_TAUNT,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHIEN_PAO

#if P_FAMILY_TING_LU
static const u16 sTingLuTeachableLearnset[] = {
    MOVE_DIG,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TING_LU

#if P_FAMILY_CHI_YU
static const u16 sChiYuTeachableLearnset[] = {
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_CHI_YU

#if P_FAMILY_ROARING_MOON
static const u16 sRoaringMoonTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_DIG,
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_ROARING_MOON

#if P_FAMILY_IRON_VALIANT
static const u16 sIronValiantTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_DOUBLE_TEAM,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SKILL_SWAP,
    MOVE_TAUNT,
    MOVE_THUNDERBOLT,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_FURY_CUTTER,
    MOVE_ICE_PUNCH,
    MOVE_ICY_WIND,
    MOVE_METRONOME,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_PUNCH,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_VALIANT

#if P_FAMILY_KORAIDON
static const u16 sKoraidonTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_SMASH,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_MUD_SLAP,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_KORAIDON

#if P_FAMILY_MIRAIDON
static const u16 sMiraidonTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MIRAIDON

#if P_FAMILY_WALKING_WAKE
static const u16 sWalkingWakeTeachableLearnset[] = {
    MOVE_DRAGON_CLAW,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_WATERFALL,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_WALKING_WAKE

#if P_FAMILY_IRON_LEAVES
static const u16 sIronLeavesTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SOLAR_BEAM,
    MOVE_TAUNT,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_LEAVES

#if P_FAMILY_POLTCHAGEIST
static const u16 sPoltchageistTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};

static const u16 sSinistchaTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_GIGA_DRAIN,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REFLECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SOLAR_BEAM,
    MOVE_ENDURE,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_POLTCHAGEIST

#if P_FAMILY_OKIDOGI
static const u16 sOkidogiTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULK_UP,
    MOVE_DIG,
    MOVE_FACADE,
    MOVE_FOCUS_PUNCH,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_ROCK_TOMB,
    MOVE_SLUDGE_BOMB,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_FIRE_PUNCH,
    MOVE_ICE_PUNCH,
    MOVE_SLEEP_TALK,
    MOVE_THUNDER_PUNCH,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_OKIDOGI

#if P_FAMILY_MUNKIDORI
static const u16 sMunkidoriTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_METRONOME,
    MOVE_MUD_SLAP,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWIFT,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_MUNKIDORI

#if P_FAMILY_FEZANDIPITI
static const u16 sFezandipitiTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_ATTRACT,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_FLY,
    MOVE_HYPER_BEAM,
    MOVE_LIGHT_SCREEN,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_TAUNT,
    MOVE_THIEF,
    MOVE_TOXIC,
    MOVE_ENDURE,
    MOVE_ICY_WIND,
    MOVE_PSYCH_UP,
    MOVE_SLEEP_TALK,
    MOVE_SWAGGER,
    MOVE_SWIFT,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_FEZANDIPITI

#if P_FAMILY_OGERPON
static const u16 sOgerponTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_BULLET_SEED,
    MOVE_FACADE,
    MOVE_GIGA_DRAIN,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_COUNTER,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_OGERPON

#if P_FAMILY_GOUGING_FIRE
static const u16 sGougingFireTeachableLearnset[] = {
    MOVE_DRAGON_CLAW,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FIRE_BLAST,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_OVERHEAT,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SUNNY_DAY,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_GOUGING_FIRE

#if P_FAMILY_RAGING_BOLT
static const u16 sRagingBoltTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SHOCK_WAVE,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_TAUNT,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_THUNDER_WAVE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_RAGING_BOLT

#if P_FAMILY_IRON_BOULDER
static const u16 sIronBoulderTeachableLearnset[] = {
    MOVE_AERIAL_ACE,
    MOVE_BRICK_BREAK,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_ROCK_TOMB,
    MOVE_SANDSTORM,
    MOVE_TAUNT,
    MOVE_BODY_SLAM,
    MOVE_COUNTER,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_BOULDER

#if P_FAMILY_IRON_CROWN
static const u16 sIronCrownTeachableLearnset[] = {
    MOVE_BRICK_BREAK,
    MOVE_CALM_MIND,
    MOVE_FACADE,
    MOVE_HYPER_BEAM,
    MOVE_PROTECT,
    MOVE_PSYCHIC,
    MOVE_REST,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_SLEEP_TALK,
    MOVE_SWORDS_DANCE,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_IRON_CROWN

#if P_FAMILY_TERAPAGOS
static const u16 sTerapagosTeachableLearnset[] = {
    MOVE_CALM_MIND,
    MOVE_EARTHQUAKE,
    MOVE_FACADE,
    MOVE_FLAMETHROWER,
    MOVE_HYPER_BEAM,
    MOVE_ICE_BEAM,
    MOVE_PROTECT,
    MOVE_RAIN_DANCE,
    MOVE_REST,
    MOVE_ROAR,
    MOVE_SOLAR_BEAM,
    MOVE_SUNNY_DAY,
    MOVE_SURF,
    MOVE_THUNDER,
    MOVE_THUNDERBOLT,
    MOVE_TOXIC,
    MOVE_WATER_PULSE,
    MOVE_BODY_SLAM,
    MOVE_DOUBLE_EDGE,
    MOVE_ENDURE,
    MOVE_ROCK_SLIDE,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_TERAPAGOS

#if P_FAMILY_PECHARUNT
static const u16 sPecharuntTeachableLearnset[] = {
    MOVE_PROTECT,
    MOVE_REST,
    MOVE_SHADOW_BALL,
    MOVE_SLUDGE_BOMB,
    MOVE_TOXIC,
    MOVE_DEFENSE_CURL,
    MOVE_ENDURE,
    MOVE_ROLLOUT,
    MOVE_SLEEP_TALK,
    MOVE_UNAVAILABLE,
};
#endif //P_FAMILY_PECHARUNT
