diff --git a/pokeemerald-tools/gen-new-tutor-set.py b/pokeemerald-tools/gen-new-tutor-set.py new file mode 100644 index 0000000000..6d26ad695c --- /dev/null +++ b/pokeemerald-tools/gen-new-tutor-set.py @@ -0,0 +1,72 @@ +#Create moveset +import time +import openpyxl as pyxl + +from openpyxl.utils import get_column_letter +from openpyxl.workbook import Workbook +from openpyxl import load_workbook + +start = time.time() + +#Globals for making header, opening data, debug prints, etc +Debug = 1 +WriteOrAdd = 'w' +GenName = "PkmnEvolved" +Header = "static const u16 sNoneTeachableLearnset[] = {\n\t MOVE_UNAVAILABLE,\n};\n\n" +CurrentSpecies = "" +PkmnData = load_workbook('pkmndata.xlsx') +if 'tutor-set' in PkmnData.sheetnames: + PkmnDataFile = PkmnData['tutor-set'] +else: + print("learnset sheet not found") + +#Print high level information about datafile being accessed +if Debug: + print(f"First row for species {PkmnDataFile.min_row}") + print(f"Last row for species {PkmnDataFile.max_row}") + print(f"First column of species-data ") + print(f"Last column of species-data ") + print(f"First column of tutor-data #{PkmnDataFile.min_column}, Letter:{get_column_letter(PkmnDataFile.min_column)}") + print(f"Last column of tutor-data #{PkmnDataFile.max_column}, Letter:{get_column_letter(PkmnDataFile.max_column)}") + +with open("test_teachable.h", WriteOrAdd) as file: + file.write(Header) + #Start from second row so you do not grab data headers + #for row in PkmnDataFile.iter_rows(min_row=2, max_row=20, min_col=PkmnDataFile.min_column, max_col=PkmnDataFile.max_column): + for row in PkmnDataFile.iter_rows(min_row=2, max_row=PkmnDataFile.max_row, min_col=PkmnDataFile.min_column, max_col=PkmnDataFile.max_column): + for data in row: + if data.column == 1: #If a new mon, make check if header necessary + if row[PkmnDataFile.max_column-1].value == 1:#check for new species flag + CurrentSpecies = data.value + fixCase = data.value + fixCase = fixCase[0] + fixCase[1:len(fixCase)].lower() + file.write(f"#if P_FAMILY_{data.value}\nstatic const u16 s{fixCase}TeachableLearnset[] = {{\n") + else: #if no new species flag, just make new learnset because it belongs to that family evolution line + fixCase = data.value + fixCase = fixCase[0] + fixCase[1:len(fixCase)].lower() + file.write(f"static const u16 s{fixCase}TeachableLearnset[] = {{\n") +# elif data.column == PkmnDataFile.max_column: #if reached newspecies column, do not write 1. check if next species is new species and close with #endif +# if PkmnDataFile.cell(data.row + 1, PkmnDataFile.max_column).value == 1:#if the next mon is a new species +# file.write(f"#endif //P_FAMILY_{CurrentSpecies}\n\n") +# elif data.value == 1: #account for case when reading row of new species +# file.write(f"}};\n") +# else: #otherwise just close it +# file.write(f"}};\n") + elif data.value == None: #if reached newspecies column, do not write 1. check if next species is new species and close with #endif + if PkmnDataFile.cell(data.row + 1, PkmnDataFile.max_column).value == 1:#if the next mon is a new species + file.write(f"}};\n#endif //P_FAMILY_{CurrentSpecies}\n\n") + else: #otherwise just close it + file.write(f"}};\n") + break + + elif data.value == 1: #check if you have hit newspecies indicator + if PkmnDataFile.cell(data.row + 1, PkmnDataFile.max_column).value == 1:#if the next mon is a new species + file.write(f"}};\n#endif //P_FAMILY_{CurrentSpecies}\n\n") + else: #otherwise just close it + file.write(f"}};\n") + + else: + file.write(f"\tMOVE_{data.value},\n") + + end = time.time() + print(f"Runtime: {end - start} seconds") \ No newline at end of file diff --git a/pokeemerald-tools/pkmndata.xlsx b/pokeemerald-tools/pkmndata.xlsx index 710fb89e9a..fec68631d2 100644 Binary files a/pokeemerald-tools/pkmndata.xlsx and b/pokeemerald-tools/pkmndata.xlsx differ diff --git a/pokeemerald-tools/test_teachable.h b/pokeemerald-tools/test_teachable.h new file mode 100644 index 0000000000..79187a3379 --- /dev/null +++ b/pokeemerald-tools/test_teachable.h @@ -0,0 +1,11741 @@ +static const u16 sNoneTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +#if P_FAMILY_BULBASAUR +static const u16 sBulbasaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sIvysaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sVenusaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sEcosaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sTerarisaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sSymbisaurTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER +static const u16 sCharmanderTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sCharmeleonTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sCharizardTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sChariguanaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sCharianaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, +}; +static const u16 sChariathanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, +}; +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE +static const u16 sSquirtleTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sWartortleTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sBlastoiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sFerrapinTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sFortoiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sTurtilleryTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE +static const u16 sCaterpieTeachableLearnset[] = { +}; +static const u16 sMetapodTeachableLearnset[] = { +}; +static const u16 sButterfreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sButteflareTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sPyrefreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sImpsectTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE +static const u16 sWeedleTeachableLearnset[] = { +}; +static const u16 sKakunaTeachableLearnset[] = { +}; +static const u16 sBeedrillTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sBeebruteTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sDronarchTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sSepistrikeTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY +static const u16 sPidgeyTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sPidgeottoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sPidgeotTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sPidgaeroTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sPidgeozoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sPidgephyrTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA +static const u16 sRattataTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sRaticateTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRattchetTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRattaruleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW +static const u16 sSpearowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sFearowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sSneerowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sOrnithowTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +#endif //P_FAMILY_SPEAROW + +#if P_FAMILY_EKANS +static const u16 sEkansTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, +}; +static const u16 sArbokTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, +}; +static const u16 sNohtypTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, +}; +static const u16 sAdnokanaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_STRENGTH, +}; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +static const u16 sPikachuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sRaichuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sGorochuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sStromachuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW +static const u16 sSandshrewTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sSandslashTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sSandslamTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sFerodilloTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN\sf +static const u16 sNidoran\sfTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidorinaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidoqueenTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidoregalTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidoarchyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_NIDORAN\sf + +#if P_FAMILY_NIDORAN\sm +static const u16 sNidoran\smTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidorinoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidokingTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidorulyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sNidominateTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_NIDORAN\sm + +#if P_FAMILY_CLEFAIRY +static const u16 sClefairyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sClefableTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sClefaefaeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sClefanautTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX +static const u16 sVulpixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, +}; +static const u16 sNinetalesTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, +}; +static const u16 sSpiritalesTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, +}; +static const u16 sYokayubiTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, +}; +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +static const u16 sJigglypuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sWigglytuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sGigglyhuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sBogglyfuffTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, +}; +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT +static const u16 sZubatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, +}; +static const u16 sGolbatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, +}; +static const u16 sCrobatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, +}; +static const u16 sPolabatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, +}; +static const u16 sVisibatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, +}; +static const u16 sHorribatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SNATCH, + MOVE_FLY, +}; +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH +static const u16 sOddishTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sGloomTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sVileplumeTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sRafflurkTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sConcorpsiaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_FLASH, +}; +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS +static const u16 sParasTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sParasectTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sSectasiteTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sFungalithTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_PARAS + +#if P_FAMILY_VENONAT +static const u16 sVenonatTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sVenomothTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sVenomenaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sVenomenonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +#endif //P_FAMILY_VENONAT + +#if P_FAMILY_DIGLETT +static const u16 sDiglettTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sDugtrioTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sDugroupleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sUnearthletTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sDiglenoidTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH +static const u16 sMeowthTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sPersianTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sFelankhTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sPatraphinxTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SNATCH, + MOVE_CUT, + MOVE_FLASH, +}; +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK +static const u16 sPsyduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sGolduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sGilduckTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPlatinupusTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_PSYDUCK + +#if P_FAMILY_MANKEY +static const u16 sMankeyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sPrimeapeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sGorillashTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sBonumbellTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE +static const u16 sGrowlitheTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sArcanineTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sSingeshaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sGuardianceTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_OVERHEAT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG +static const u16 sPoliwagTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPoliwhirlTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPoliwrathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPolitoesTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPoliwiseTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPoliathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA +static const u16 sAbraTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sKadabraTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sAlakazamTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sSimsalabimTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sVohoo-duTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sT'zarkartzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP +static const u16 sMachopTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMachokeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMachampTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMachulkTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sAbomachulkTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMachitanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT +static const u16 sBellsproutTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sWeepinbellTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sVictreebelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sMucktribelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sCarnabellTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, +}; +static const u16 sDevloraTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, +}; +#endif //P_FAMILY_BELLSPROUT + +#if P_FAMILY_TENTACOOL +static const u16 sTentacoolTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sTentacruelTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sTentacateTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sTentabomaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_TENTACOOL + +#if P_FAMILY_GEODUDE +static const u16 sGeodudeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sGravelerTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sGolemTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sSlagolemTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMoltremTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sVolcanicolTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA +static const u16 sPonytaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, +}; +static const u16 sRapidashTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, +}; +static const u16 sCombustangTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, +}; +static const u16 sKnightmareTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, + MOVE_STRENGTH, +}; +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE +static const u16 sSlowpokeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_DIVE, +}; +static const u16 sSlowbroTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, +}; +static const u16 sSlowmateTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, +}; +static const u16 sSlowchumTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_DIVE, +}; +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE +static const u16 sMagnemiteTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, +}; +static const u16 sMagnetonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, +}; +static const u16 sMagnezoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, +}; +static const u16 sMagnemeldTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, +}; +static const u16 sMagnemastrTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_FLASH, +}; +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCH'D +static const u16 sFarfetch'dTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, +}; +static const u16 sForfowl'dTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, +}; +static const u16 sFowln'tomTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, +}; +#endif //P_FAMILY_FARFETCH'D + +#if P_FAMILY_DODUO +static const u16 sDoduoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sDodrioTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sQuadodoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +static const u16 sDodozenTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, +}; +#endif //P_FAMILY_DODUO + +#if P_FAMILY_SEEL +static const u16 sSeelTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sDewgongTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPrecipedTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sManatiiTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_SEEL + +#if P_FAMILY_GRIMER +static const u16 sGrimerTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, +}; +static const u16 sMukTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sGunkTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sSkumTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER +static const u16 sShellderTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, +}; +static const u16 sCloysterTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, +}; +static const u16 sAn'enemyTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, +}; +static const u16 sGlaishellTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_DIVE, +}; +#endif //P_FAMILY_SHELLDER + +#if P_FAMILY_GASTLY +static const u16 sGastlyTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, +}; +static const u16 sHaunterTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, +}; +static const u16 sGengarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sGengoneTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sPoltergastTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sGrimmTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX +static const u16 sOnixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sSteelixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sPlatnixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sObsidianixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sStalagmixTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE +static const u16 sDrowzeeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sHypnoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sLullooTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sSomnisoothTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +#endif //P_FAMILY_DROWZEE + +#if P_FAMILY_KRABBY +static const u16 sKrabbyTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, +}; +static const u16 sKinglerTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, +}; +static const u16 sKraklawTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, +}; +static const u16 sTeklawnoTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_DIVE, +}; +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB +static const u16 sVoltorbTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sElectrodeTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sElectrodesTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sElectrodexTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sElectrodemTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE +static const u16 sExeggcuteTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sExeggutorTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sExeggityTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, +}; +static const u16 sExeggtricTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_FLASH, +}; +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE +static const u16 sCuboneTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMarowakTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sOsselobberTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sWraiwrathTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONLEE +static const u16 sHitmonleeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sCleevoyantTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sSpirituleeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_HITMONLEE + +#if P_FAMILY_HITMONCHAN +static const u16 sHitmonchanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sEnchancedTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRadiachanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_HITMONCHAN + +#if P_FAMILY_LICKITUNG +static const u16 sLickitungTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sLickilickyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sLickilollyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sLickilatoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING +static const u16 sKoffingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sWeezingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sHeevingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sChohkingTeachableLearnset[] = { + MOVE_MIMIC, + MOVE_EXPLOSION, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_FLASH, +}; +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN +static const u16 sRhyhornTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRhydonTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRhyperiorTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRhymarkablTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRhylicTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRhybornTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +static const u16 sChanseyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sBlisseyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sGogetteyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sLukkeyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sFortuniteyTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA +static const u16 sTangelaTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sTangrowthTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sTangatherTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sTangoliathTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sTangrappleTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SLUDGE_BOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGAKID +static const u16 sKangakidTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sKangaskhanTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sKangallousTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sKangarutalTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_KANGAKID + +#if P_FAMILY_HORSEA +static const u16 sHorseaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sSeadraTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sKingdraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sLordraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sPinnadraTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN +static const u16 sGoldeenTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sSeakingTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sSearexTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sCapriseaTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_GOLDEEN + +#if P_FAMILY_STARYU +static const u16 sStaryuTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sStarmieTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sStarusTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sStarweTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_FLASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR._MIME +static const u16 sMr._mimeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sMr._jestTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +static const u16 sMr._foolTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FLASH, +}; +#endif //P_FAMILY_MR._MIME + +#if P_FAMILY_SCYTHER +static const u16 sScytherTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_ROCK_SMASH, +}; +static const u16 sScizorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sRazerTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sClaymorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +static const u16 sJynxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sJynkiesTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +static const u16 sJeepersTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SKILL_SWAP, + MOVE_FLASH, +}; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +static const u16 sElectabuzzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sElectivireTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sElectivineTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sElectiwizzTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +static const u16 sMagmarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMagmortarTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMagmoreTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMagmoltenTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR +static const u16 sPinsirTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sPinsiriorTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sAbyssirTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_TOXIC, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_ROCK_TOMB, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_PINSIR + +#if P_FAMILY_TAUROS +static const u16 sTaurosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sTauroxTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sOxenfreeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP +static const u16 sMagikarpTeachableLearnset[] = { +}; +static const u16 sGyaradosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sHydradosTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sDracosmicTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sQuazarTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS +static const u16 sLaprasTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sLochlassTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sNesseaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO +static const u16 sDittoTeachableLearnset[] = { +}; +static const u16 sMorphoTeachableLearnset[] = { +}; +static const u16 sMetamorphoTeachableLearnset[] = { +}; +#endif //P_FAMILY_DITTO + +#if P_FAMILY_EEVEE +static const u16 sEeveeTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, +}; +static const u16 sVaporeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sRiveonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sBrineonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sJolteonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, +}; +static const u16 sPlasmeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, +}; +static const u16 sGalveonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_FLASH, +}; +static const u16 sFlareonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, +}; +static const u16 sSmoldeonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, +}; +static const u16 sInferneonTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_RETURN, + MOVE_DIG, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_OVERHEAT, +}; +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON +static const u16 sPorygonTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sPorygon2TeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sPorygon-zTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sPorygon-xTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_THIEF, + MOVE_FLASH, +}; +static const u16 sPorygon-qTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_OVERHEAT, + MOVE_FLASH, +}; +static const u16 sPorygon2a4TeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_OVERHEAT, + MOVE_FLASH, +}; +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE +static const u16 sOmanyteTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sOmastarTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sOmapalTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sOmagusTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_OMANYTE + +#if P_FAMILY_KABUTO +static const u16 sKabutoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, +}; +static const u16 sKabutopsTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sKabutakTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sKabustionTeachableLearnset[] = { + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DIG, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SANDSTORM, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_CUT, + MOVE_SURF, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_KABUTO + +#if P_FAMILY_AERODACTYL +static const u16 sAerodactylTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sMandiluftTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +static const u16 sAmbalithicTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_DRAGON_CLAW, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +static const u16 sSnorlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, +}; +static const u16 sActlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, +}; +static const u16 sGrizzlaxTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_STRENGTH, +}; +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO +static const u16 sArticunoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, +}; +static const u16 sSnowoneTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, +}; +static const u16 sFrostunusTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS +static const u16 sZapdosTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sShockatooTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sVoltduoTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_FRUSTRATION, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_SANDSTORM, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_FLY, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES +static const u16 sMoltresTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, +}; +static const u16 sIgnithreeTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, +}; +static const u16 sInferntriTeachableLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_SUBSTITUTE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_OVERHEAT, + MOVE_FLY, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI +static const u16 sDratiniTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, +}; +static const u16 sDragonairTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_WATER_PULSE, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_RETURN, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_FIRE_BLAST, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_SURF, + MOVE_WATERFALL, +}; +static const u16 sDragoniteTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sDragonierTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sDragonaceTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sDragontaleTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_STEEL_WING, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_DRATINI + +#if P_FAMILY_MEWTWO +static const u16 sMewtwoTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sMewthreeTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +static const u16 sMewfourTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, +}; +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW +static const u16 sMewTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sNyuTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +static const u16 sIotaTeachableLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_SWORDS_DANCE, + MOVE_MEGA_KICK, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_COUNTER, + MOVE_SEISMIC_TOSS, + MOVE_MIMIC, + MOVE_METRONOME, + MOVE_SOFTBOILED, + MOVE_DREAM_EATER, + MOVE_THUNDER_WAVE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SUBSTITUTE, + MOVE_FOCUS_PUNCH, + MOVE_DRAGON_CLAW, + MOVE_WATER_PULSE, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLARBEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#endif //P_FAMILY_MEW + +#if P_FAMILY_MISSINGNO_1 +static const u16 sMissingno_1TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, +}; +#endif //P_FAMILY_MISSINGNO_1 + +#if P_FAMILY_MISSINGNO_2 +static const u16 sMissingno_2TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, +}; +#endif //P_FAMILY_MISSINGNO_2 + +#if P_FAMILY_MISSINGNO_3 +static const u16 sMissingno_3TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, +}; +#endif //P_FAMILY_MISSINGNO_3 + +#if P_FAMILY_MISSINGNO_4 +static const u16 sMissingno_4TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, +}; +#endif //P_FAMILY_MISSINGNO_4 + +#if P_FAMILY_MISSINGNO_5 +static const u16 sMissingno_5TeachableLearnset[] = { + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SECRET_POWER, +};